【问题标题】:MySQL: Shuffle a limited query result? [duplicate]MySQL:随机播放有限的查询结果? [复制]
【发布时间】:2011-05-30 20:53:22
【问题描述】:

可能重复:
Simple Random Samples from a (My)Sql database

嗨!

假设我有一个用户表。我想要一个随机显示结果并且只显示 5 个用户的查询。如何在不使用任何 php 的情况下在 MySQL 查询中做到这一点?

【问题讨论】:

标签: sql mysql


【解决方案1】:

你可以使用rand(),但是性能很糟糕

select * from users order by rand() limit 5; <-- slow

我建议,将所有用户 ID 的列表存储到序列化数组中并缓存到磁盘文件中。 (定期更新)

因此,您可以使用 PHP 将其反序列化,并使用 PHP array_rand 随机选择 5 个用户。

要获取完整信息,您可以这样做

select * from users where user_id in(...); <-- very fast

【讨论】:

    【解决方案2】:
    SELECT user FROM users
    ORDER BY RAND()
    LIMIT 5
    

    【讨论】:

      猜你喜欢
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 2018-03-13
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多