mysql - 从mysql中选择随机记录

标签 mysql sql

在表 X 中,有一个字段 Y(int),它保存从 1 到 8 的值。 我正在尝试找到最有效的方法来创建查询(这是存储过程的一部分),该查询可以从数据库中随机选择 5 条记录。

整个表中的 5 条记录不是随机的 - 例如,该过程应该能够 选择 1 个随机记录,其中 Y=1,另外 2 个记录,其中 Y=2,另外 2 个记录,其中 Y 在 (4,5,6) 中。

有推荐的方法来实现它还是我应该使用 Union? 此查询需要尽可能快。

最佳答案

联盟应该是最快的方法

(select * from your_table where Y = 1 order by rand() limit 1)
union
(select * from your_table where Y = 2 order by rand() limit 2)
union
(select * from your_table where Y in (4,5,6) order by rand() limit 2)

关于mysql - 从mysql中选择随机记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975093/

相关文章:

php - 使用 PHP 分页系统仅显示最后 300 个 MYSQL 结果

mysql - 将数据导入MySQL数据库

sql - 从同一个子查询中选择多个聚合结果

MySQL 查询运行失败 - MySQL 错误 : #1064

sql - 选择分隔字符串作为 Oracle sql 中的表

mysql - 如何在 MySQL CLI 客户端中重置查询

mysql - 使用 Alfresco CMS 时为什么要将文档存储到 DBMS 中?

sql-server-2008 - Select 语句中的 bool 逻辑

php - MySql UNION 具有应用默认值的不同列?

sql - Valentina Studio 插入了数百万行