【问题标题】:Select random records from mysql从mysql中选择随机记录
【发布时间】:2014-07-26 20:09:28
【问题描述】:

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

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

是否有推荐的方法来实现它或者我应该只使用联合? 此查询需要尽可能快。

【问题讨论】:

  • 您选择的 5 条记录是来自 X 表还是其他表?
  • 仅从表 X 中选择
  • 好的,那么表 X 上肯定还有其他列。我对它的读取方式感到困惑,这听起来像是 X 表是一个只有一列的 8 行表,Y。Juergen 的答案应该有效

标签: mysql sql


【解决方案1】:

联合应该是最快的方法

(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)

【讨论】:

  • 感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2011-09-05
  • 2018-11-19
  • 2019-03-25
  • 2010-10-08
  • 2012-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多