【发布时间】:2010-05-27 03:12:31
【问题描述】:
我想在我的数据库中随机选择一行。我在一个网站上看到了这个解决方案:
SELECT column FROM table
ORDER BY RAND()
LIMIT 1
此 SQL 查询运行,但有人说我这是一个非性能查询。还有其他解决方案吗?
谢谢
【问题讨论】:
-
供将来参考:RAND() 仅适用于 mysql。
标签: php sql mysql select random
我想在我的数据库中随机选择一行。我在一个网站上看到了这个解决方案:
SELECT column FROM table
ORDER BY RAND()
LIMIT 1
此 SQL 查询运行,但有人说我这是一个非性能查询。还有其他解决方案吗?
谢谢
【问题讨论】:
标签: php sql mysql select random
是的。你必须用
计算行数SELECT COUNT(*) FROM `table`;
在此之后使用 php 函数 mt_rand() 获取从 1 到 $count 的随机数并通过查询获取:
SELECT `column` FROM `table` LIMIT $rand, 1
【讨论】:
mysql。你是否? :-S
Microsoft SQL Server?
this question 对此主题进行了更多讨论,包括对不同 DBMS 的性能影响和策略。
【讨论】:
id 并找到 >= 的值。该解决方案为我们提供了不规则的随机覆盖(例如:1、2、3、4、5、6、7、8、9、1000000000000。在这种情况下,99.99% 的情况下您将获得最新的行)。这不是真正的均匀随机