我使用的是MSSQL Server 2005。在我的db中,我有一个表“customerNames”,它有两列“Id”和“名称”和大约。1000年的结果。
我正在创建一个功能,每次都必须随机选择5个客户。谁能告诉我如何创建一个查询,将获得随机5行(Id,和名称)每次查询执行时?
我使用的是MSSQL Server 2005。在我的db中,我有一个表“customerNames”,它有两列“Id”和“名称”和大约。1000年的结果。
我正在创建一个功能,每次都必须随机选择5个客户。谁能告诉我如何创建一个查询,将获得随机5行(Id,和名称)每次查询执行时?
当前回答
如果有人想要PostgreSQL解决方案:
select id, name
from customer
order by random()
limit 5;
其他回答
如果你使用的是一个大表,想要访问10%的数据,那么运行下面的命令:SELECT TOP 10% * FROM Table1 ORDER BY NEWID();
也许这个网站会有帮助。
对于那些不想点击浏览的人:
SELECT TOP 1 column FROM table
ORDER BY NEWID()
这里有一个很好的Microsoft SQL Server 2005特定解决方案。 处理你正在处理一个大结果集的问题(不是我知道的问题)。
从大表中随机选择行 http://msdn.microsoft.com/en-us/library/cc441928.aspx
如果你有一个有数百万行的表,并且关心性能,这可能是一个更好的答案:
SELECT * FROM Table1
WHERE (ABS(CAST(
(BINARY_CHECKSUM
(keycol1, NEWID())) as int))
% 100) < 10
https://msdn.microsoft.com/en-us/library/cc441928.aspx
SELECT TOP 5 Id, Name FROM customerNames ORDER BY NEWID()