You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:MySQL按指定难度比例获取10条随机行的SQL查询方案

解决方案

可以通过分组随机抽取后合并结果的方式实现需求,具体SQL语句如下:

(SELECT * FROM your_table WHERE difficulty = 'A' ORDER BY RAND() LIMIT 4)
UNION ALL
(SELECT * FROM your_table WHERE difficulty = 'B' ORDER BY RAND() LIMIT 4)
UNION ALL
(SELECT * FROM your_table WHERE difficulty = 'C' ORDER BY RAND() LIMIT 2);

关键说明

  • 每个子查询单独处理对应难度的随机选取:ORDER BY RAND()会对当前筛选出的同难度行做随机排序,LIMIT N截取前N条目标数据
  • 使用UNION ALL合并三个子查询结果,无需去重(三类难度的结果天然无重复冲突)
  • 记得把语句中的your_table替换成你的实际表名

对于数千条记录的表,这个写法的性能完全够用。如果后续表数据量大幅增长,也可以改用基于主键的随机抽取方式优化性能,但当前场景下上述写法简单直接,完全满足需求。

内容的提问来源于stack exchange,提问作者KayWe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:13:14