以随机顺序返回行

时间:2009-07-13 04:56:30

标签: sql sql-server tsql

是否可以编写每次查询运行时以随机顺序返回表行的SQL查询?

6 个答案:

答案 0 :(得分:165)

SELECT * FROM table
ORDER BY NEWID()

答案 1 :(得分:21)

这是最简单的解决方案:

SELECT quote FROM quotes ORDER BY RAND() 

虽然效率不高。 This one是一个更好的解决方案。

答案 2 :(得分:12)

通常的方法是使用NEWID()函数,该函数生成唯一的GUID。所以,

SELECT * FROM dbo.Foo ORDER BY NEWID();

答案 3 :(得分:0)

为了提高效率和随机性,最好有两个不同的查询。

像...一样的东西。

SELECT table_id FROM table

然后,用您选择的语言,选择一个随机ID,然后拉出该行的数据。

SELECT * FROM table WHERE table_id = $ rand_id

但是,如果你希望表中有很多行,这不是一个好主意。如果你对随机选择的内容设置某种限制会更好。对于出版物,也许只能从去年发布的项目中随机挑选。

答案 4 :(得分:0)

以下是一个示例(source):

SET @randomId = Cast(((@maxValue + 1) - @minValue) * Rand() + @minValue AS tinyint);

答案 5 :(得分:-3)

这就是你需要的:

SELECT * FROM table_name ORDER BY RAND()LIMIT 1