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

如何修复MySQL查询返回结果行数不一致的问题

问题诱因

  • 核心原因是MySQL中UNION运算符的默认特性:会自动对多个子查询返回的结果集做去重处理,合并所有字段值完全相同的行。
  • 你的前两个子查询均为筛选Rate=75的记录后随机取1行,当两次随机查询抽到了完全一致的行时,UNION就会删除重复的那一行,最终仅返回2行结果。
  • 额外说明:UNION的去重逻辑会额外消耗排序计算资源,无去重需求时使用UNION也会降低查询性能。

修复方案

  • 将语句中的UNION全部替换为UNION ALL即可。UNION ALL不会执行去重逻辑,会原样保留所有子查询的返回结果,完全满足你需要返回3行的需求,同时查询性能也更高。
  • 修正后的查询语句如下:
(SELECT * FROM names WHERE Rate = 75 ORDER BY RAND() LIMIT 1) 
UNION ALL
(SELECT * FROM names WHERE Rate = 75 ORDER BY RAND() LIMIT 1) 
UNION ALL
(SELECT * FROM names  WHERE Rate = 35 ORDER BY RAND() LIMIT 1);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:00:05