是否可以编写每次查询运行时以随机顺序返回表行的SQL查询?
答案 0 :(得分:165)
SELECT * FROM table
ORDER BY NEWID()
答案 1 :(得分:21)
答案 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