【问题标题】:random record from mysql tablemysql表中的随机记录
【发布时间】:2011-03-02 12:07:17
【问题描述】:

除了order by random() 是否有任何内置函数来选择mysql表中的随机记录?

【问题讨论】:

标签: mysql


【解决方案1】:

我不这么认为...您为什么不想使用有效的?

顺便说一句,我很确定是ORDER BY RAND()

我读过它可能是多行的性能问题...你有很多行吗?

【讨论】:

  • 不,我有大约 1000 个提示,但我有大约 10000 个用户,它会减慢进程,并且提示基于类别。
【解决方案2】:

不,但你可以把它分成两个问题。在伪 PHP 和 MySQL 代码中:

$max = SELECT COUNT(*) FROM example;
$rand = rand(0, $max-1);
SELECT * FROM example LIMIT $rand, 1;

正确的方法可能是把它变成一个存储过程。

【讨论】:

  • 感谢您的即时回复。实际上我不想运行两个选择查询,因为我正在使用它来随机显示用户提示。还有其他想法吗?
  • @rshivaganesh - 这种方法的性能比order by rand()好多
  • 我不知道。我会在一张小桌子上使用 ORDER BY RAND()。也许您可以以某种方式缓存第一个查询的结果?
  • 当然。 $rand = rand(0, $max-$num); LIMIT $rand, $num; ;)
【解决方案3】:
SELECT * FROM users ORDER BY RAND() Limit 0, 1;

【讨论】:

  • 应该是LIMIT 0, 1LIMIT 1
  • @nickf 真的重要吗? ;-)
  • @nickf :- 我编辑它,但我认为'限制 1, 1;'也没有错,因为他希望显示随机数据。
  • 如果只有一行怎么办..?
  • 这就是我编辑它的原因,但是是的,然后按 rand() 排序总是会产生相同的行:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多