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

MySQL如何实现同col1分组下col2值横向展开且无重复结果

问题原因
  • 现有SQL返回双向重复配对的核心逻辑问题是:where t1.col2 <> t2.col2 仅过滤了两表col2值相同的匹配项,会同时保留(a,b)和(b,a)两类符合不等于条件的配对,最终产生重复的两行结果。
解决方案

方案1:在现有SQL基础上修改过滤条件

新增大小比较规则,强制只保留col2值更小的作为第二列、更大的作为第三列,即可过滤反向配对的冗余数据:

select t1.col1, t1.col2 as col2, t2.col2 as col3 
from my_table t1 
inner join my_table t2  
on t1.col1 = t2.col1
where t1.col2 < t2.col2;

注:这里把left join改成inner join更合理,因为你需要的是左右表都匹配到的有效配对

方案2:分组聚合写法(更适合每个col1固定对应2个col2的场景)

如果业务场景中每个col1下固定只有2个不同的col2值,可以直接用分组取最值的方式实现,逻辑更简洁,不会产生中间重复数据:

select 
  col1,
  min(col2) as col2,
  max(col2) as col3
from my_table
group by col1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:45:05