【问题标题】:Select random rows from mysql table [duplicate]从mysql表中选择随机行[重复]
【发布时间】:2012-02-05 11:11:31
【问题描述】:

可能重复:
Selecting Random Rows in MySQL

我正在使用 PHP 和 MySQL 创建一个简单的 Web 应用程序。在其中,我需要以随机顺序从表中随机选择一小组行。我怎样才能使用 MySQL 实现这样的事情?

【问题讨论】:

标签: php mysql sql


【解决方案1】:
SELECT * FROM table ORDER BY RAND() LIMIT 10;

编辑:

关于 MySQL RAND() 函数的有用信息可以在here 找到。

【讨论】:

  • 哎呀...我有 > 500M 行!这有点慢......
  • 还有其他高性能选项,如果您有一个顺序主键,请使用您选择的语言预先计算一系列 ID 并执行 SELECT ... WHERE id IN(x)
  • 查询 select count(*) from users; 返回 10293453。查询 SELECT id FROM users ORDER BY RAND() LIMIT 10; 运行 5 秒。
  • 刚刚找到您的解决方案。谢谢你。这非常简单,正是我想要的。谢谢!
  • 您的解决方案有效,但是当您的表中有数百万行时,它会变得很慢。所以,我建议在php中生成一个随机数并发送到sql查询。
【解决方案2】:
select * from table order by rand() limit 10

请注意,order by rand() 具有大型数据集非常慢,但在您的情况下这不是问题。

【讨论】:

    【解决方案3】:

    您可以使用 RAND() 函数来做到这一点。

    SELECT questine FROM tablename ORDER BY RAND() LIMIT 10
    

    假设 questine 存储在字段 questine 下,将随机选择 10 个 questine

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      相关资源
      最近更新 更多