+ -
当前位置:首页 → 问答吧 → sql2000,返回随机记录

sql2000,返回随机记录

时间:2011-12-06

来源:互联网

在SQL2000中,假设有表t,t有2个字段:ID(标识列),Name,表中有100条记录
问:如何通过查询语句随机返回5条记录,也就说要得到记录中5个不重复的Name

说明:只讨论用sql,因为这只是问题的简化版,不要讨论数组。另外,如果需要也可以增加辅助列。当然如果是通过全表更新随机数据再排序返回也不是我需要的。

麻烦大家了。

作者: crxwz   发布时间: 2011-12-06

SQL code
SELECT TOP 5 * FROM T
ORDER BY NEWID()

作者: Haiwer   发布时间: 2011-12-06

SQL code
select  top 5 * from t as a where not exists(select 1 from t where Name=a.Name and ID<a.ID) order by newID()

或
select top 5 min(ID) as ID,Name from t group by Name order by newID()

作者: roy_88   发布时间: 2011-12-06

忘记说明一点表中Name不重复。

这个查询要频繁调用,请问newID()是在服务端还是客户端执行。

作者: crxwz   发布时间: 2011-12-06

服务端
引用 3 楼 crxwz 的回复:
忘记说明一点表中Name不重复。

这个查询要频繁调用,请问newID()是在服务端还是客户端执行。

作者: geniuswjt   发布时间: 2011-12-06

随机取记录
大版写的SQL可能会出现相同Name的最大那一行永远也取不到吧

作者: pengxuan   发布时间: 2011-12-06