日期:2014-05-18  浏览次数:20415 次

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

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

麻烦大家了。

------解决方案--------------------
SQL code
SELECT TOP 5 * FROM T
ORDER BY NEWID()

------解决方案--------------------
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()

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