如何在SQL中随机select行?
我正在使用MSSQL Server 2005.在我的分贝,我有一个表“customerNames”有两列“Id”和“名称”和约。 1,000个结果。
我正在创build一个function,我必须每次随机select5个客户。 任何人都可以告诉我如何创build一个查询将获得随机5行(ID和名称)每次执行查询时?
SELECT TOP 5 Id, Name FROM customerNames ORDER BY NEWID()
这就是说,每个人似乎都来到这个页面,对你的问题的更一般的答案:
在SQL中select一个随机行
用MySQLselect一个随机的行:
SELECT column FROM table ORDER BY RAND() LIMIT 1
用PostgreSQLselect一个随机行:
SELECT column FROM table ORDER BY RANDOM() LIMIT 1
用Microsoft SQL Serverselect一个随机行:
SELECT TOP 1 column FROM table ORDER BY NEWID()
用IBM DB2select一个随机行
SELECT column, RAND() as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY
用Oracleselect一个随机logging:
SELECT column FROM ( SELECT column FROM table ORDER BY dbms_random.value ) WHERE rownum = 1
用sqliteselect一个随机的行:
SELECT column FROM table ORDER BY RANDOM() LIMIT 1
SELECT TOP 5 Id, Name FROM customerNames ORDER BY NEWID()
如果有人想要PostgreSQL解决scheme:
select id, name from customer order by random() limit 5;
也许这个网站会有帮助。
对于那些不想点击的人:
SELECT TOP 1 column FROM table ORDER BY NEWID()
这里有一个很好的Microsoft SQL Server 2005特定解决scheme。 处理您正在处理大型结果集的问题(而不是我所知道的问题)。
从大表中随机select行http://msdn.microsoft.com/en-us/library/cc441928.aspx
我发现这对于大数据最适合。
`SELECT TOP 1 Column_Name FROM dbo.Table TABLESAMPLE(1 PERCENT);`
TABLESAMPLE(n ROWS) or TABLESAMPLE(n PERCENT)
是随机的,但需要添加TOP n
以获得正确的样本大小。
在大型表上使用NEWID()
非常缓慢。
SELECT * FROM TABLENAME ORDER BY random()LIMIT 5;