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

如何在MySQL中将两次关联查询合并为单条查询?

合并两次MySQL查询的解决方案

你可以通过两种简洁的方式将这两次查询合并为一条,完美得到你想要的统计结果:

方法一:使用IN子查询

直接把第一个查询的结果作为外层查询的过滤条件,语法直观易懂:

SELECT COUNT(ID) AS `COUNT`, COL2
FROM TABLE1
WHERE COL1 IN (SELECT COL1 FROM TABLE1 WHERE COL2 = 'Item_2' GROUP BY COL1)
GROUP BY COL2
ORDER BY `COUNT` DESC
LIMIT 5;

原理说明:

  1. 内层子查询先筛选出所有包含Item_2的COL1值(也就是10和11);
  2. 外层查询只统计这些COL1对应的行数据;
  3. 最后按统计数量降序排序,取前5条结果,正好匹配你的预期输出。

方法二:使用JOIN关联(性能更优)

如果你的数据表数据量较大,用JOIN的方式通常会有更好的查询性能,这里用DISTINCT替代子查询里的GROUP BY(效果一致,都是获取唯一的COL1值):

SELECT COUNT(t1.ID) AS `COUNT`, t1.COL2
FROM TABLE1 t1
JOIN (SELECT DISTINCT COL1 FROM TABLE1 WHERE COL2 = 'Item_2') t2
ON t1.COL1 = t2.COL1
GROUP BY t1.COL2
ORDER BY `COUNT` DESC
LIMIT 5;

原理说明:

  1. 子查询生成一个仅包含符合条件COL1值的临时表;
  2. 通过JOIN操作关联原表,只保留临时表中存在COL1的行;
  3. 后续的统计、排序和限制操作和方法一一致。

两种方法最终都会返回你期望的结果:

2 Item_2
1 Item_1
1 Item_3
1 Item_4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:20:36