如何从MySQL表随机选取出现至少两次的rartid分组?
MySQL随机选取符合条件分组的SQL方案
需求明确:从出现次数至少为2次的rartid分组中随机选一个,取出该分组的所有bedid和rartid数据。
推荐SQL写法
SELECT t.bedid, t.rartid FROM your_table t JOIN ( -- 筛选出现次数≥2的rartid并随机选一个 SELECT rartid FROM your_table GROUP BY rartid HAVING COUNT(*) >= 2 ORDER BY RAND() LIMIT 1 ) AS target_rartid ON t.rartid = target_rartid.rartid;
语句说明
- 子查询部分:先按
rartid分组,用COUNT(*) >= 2筛选出出现次数达标的分组,通过ORDER BY RAND()随机打乱顺序,LIMIT 1锁定一个目标rartid。 - 外层查询:将原表和子查询结果关联,取出该
rartid对应的所有行数据,即为随机选中的分组数据。
适配示例场景
以你给出的数据表为例,子查询会从33、44、55这三个符合条件的rartid里随机选一个,最终返回对应分组的全部数据,和你期望的任意一种结果匹配。
内容的提问来源于stack exchange,提问作者pudipel64
相关产品推荐
相关产品推荐

