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

SQL自连接查询出现重复冲突记录,如何去重仅保留每条冲突一条结果?

SQL自连接冲突查询去重方案

修改后的查询语句

SELECT
  t1.id,
  t1.status,
  t1.date,
  t1.serial,
  t2.id AS id_2,
  t2.status AS status_2,
  t2.date AS date_2,
  t2.serial AS serial_2
FROM `table` AS t1 
INNER JOIN `table` AS t2 
  ON t1.serial = t2.serial
  AND t1.date = t2.date
WHERE t1.id < t2.id
ORDER BY t1.date, t1.id;

如果你原表中t2侧的字段名确实是serial_2、id_2,将ON和WHERE条件里的对应字段名换回你原本的写法即可。

实现逻辑

  • 原查询使用t1.id <> t2.id_2作为判断条件,允许同一组ID对按正反两种顺序匹配,因此同一个冲突会生成两条重复结果
  • 改为t1.id < t2.id的单向大小比较后,仅会保留ID更小的记录放在t1侧、ID更大的放在t2侧的结果,每组冲突仅返回唯一一条记录,同时可以删除冗余的DISTINCT关键字,提升查询性能
  • 如果ID为非数值类型无法做大小比较,也可以替换为其他单向判断逻辑,比如t1.create_time < t2.create_time,只要能固定唯一的排序规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:06:03