如何在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;