我正在使用MSSQL Server 2005.在我的数据库中,我有一个表"customerNames",它有两列"Id"和"Name"和大约.1,000个结果.
我正在创建一个功能,每次我必须随机挑选5个客户.任何人都可以告诉我如何创建一个查询,每次执行查询时将获得随机的5行(Id和Name)?
SELECT TOP 5 Id, Name FROM customerNames ORDER BY NEWID()
也就是说,每个人似乎都来到这个页面,以获得更一般的答案:
SELECT column FROM table ORDER BY RAND() LIMIT 1
SELECT column FROM table ORDER BY RANDOM() LIMIT 1
SELECT TOP 1 column FROM table ORDER BY NEWID()
SELECT column, RAND() as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY
SELECT column FROM ( SELECT column FROM table ORDER BY dbms_random.value ) WHERE rownum = 1
SELECT column FROM table ORDER BY RANDOM() LIMIT 1
SELECT TOP 5 Id, Name FROM customerNames ORDER BY NEWID()
也许这个网站会有所帮助.
对于那些不想点击的人:
SELECT TOP 1 column FROM table ORDER BY NEWID()
如果有人想要PostgreSQL解决方案:
select id, name from customer order by random() limit 5;
这里有一个很好的Microsoft SQL Server 2005特定解决方案.处理使用大型结果集的问题(不是我知道的问题).
从大表中随机选择行 http://msdn.microsoft.com/en-us/library/cc441928.aspx