是否有可能编写每次运行查询时以随机顺序返回表行的 SQL 查询?
这是最简单的解决方案:
SELECT quote FROM quotes ORDER BY RAND()
虽然它不是最有效的。 This one是一个更好的解决方案。
SELECT * FROM table ORDER BY NEWID()
通常的方法是使用 NEWID ()函数,它会生成一个惟一的 GUID,
SELECT * FROM dbo.Foo ORDER BY NEWID();
为了提高效率和随机性,最好有两个不同的查询。
比如..。
SELECT table _ id FROM 表
Then, in your chosen language, pick a random id, then pull that row's data.
SELECT * FROM table WHERE table _ id = $rand _ id
但是如果您希望表中有很多行,那么这不是一个好主意。如果你对你随机选择的东西设置一些限制会更好。对于出版物来说,可能只从去年发布的内容中随机挑选。
下面是一个例子(来源) :
SET @randomId = Cast(((@maxValue + 1) - @minValue) * Rand() + @minValue AS tinyint);
SQL Server/MS 访问语法:
SELECT TOP 1 * FROM table_name ORDER BY RAND()
MySQL 语法:
SELECT * FROM table_name ORDER BY RAND() LIMIT 1