这个问题已经在这里有一个答案:
- 如何在随机选择SQL行? 9个回答
是否有可能写在随机顺序每次查询运行时返回表行的SQL查询?
这个问题已经在这里有一个答案:
是否有可能写在随机顺序每次查询运行时返回表行的SQL查询?
SELECT * FROM table
ORDER BY NEWID()
这是最简单的解决方案:
SELECT quote FROM quotes ORDER BY RAND()
它虽然不是最有效的。 这一个是一个更好的解决方案。
通常的方法是使用NEWID()函数,其产生一个唯一的GUID。 所以,
SELECT * FROM dbo.Foo ORDER BY NEWID();
为了提高效率,并且随机的,它可能是最好的有两个不同的查询。
就像是...
SELECT的table_id FROM表
然后,在你选择的语言,选择一个随机ID,然后拉出该行的数据。
SELECT * FROM表,其中的table_id = $ rand_id
但是,这不是真的,如果你期待有很多表中的行的一个好主意。 如果你把某种限制对你随机选择会更好。 对于出版物,也许随机仅在过去一年内张贴的项目挑选。
下面是一个例子( 源 ):
SET @randomId = Cast(((@maxValue + 1) - @minValue) * Rand() + @minValue AS tinyint);
这是你所需要的:
SELECT * FROM表名ORDER BY RAND()LIMIT 1