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

SQL同表自连接使用计算字段返回重复配对行如何避免

解决自连接重复ID配对的方案

核心思路是通过ID的大小比较限制配对方向,确保每对ID仅返回一次结果,具体操作如下:

  • 给自连接的两个表分别设置别名,比如左表叫a、右表叫b,在连接条件或者WHERE子句中加入a.id < b.id的约束。这个约束同时实现两个效果:一是过滤了行自身和自身连接的无效结果,二是直接排除了ID反向的重复配对(只会保留ID小的在前、大的在后的唯一组合)。

示例SQL代码

SELECT 
  a.id AS idClient1,
  b.id AS idClient2,
  a.quantity AS quantity1,
  b.quantity AS quantity2,
  a.quantity + b.quantity AS sum
FROM 你的表名 a
INNER JOIN 你的表名 b
ON a.id < b.id

运行效果

针对你提供的示例数据,执行上述SQL后只会返回6条无重复的有效结果,不会出现idClient1=2、idClient2=1这类反向重复行:

idClient1   idClient2  quantity1   quantity2     sum
   1           2          2            6          8  
   1           3          2            4          6
   1           4          2            3          5
   2           3          6            4          10
   2           4          6            3          9
   3           4          4            3          7

如果你的业务场景需要包含行自身和自身求和的结果,把约束条件改为a.id <= b.id即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:27:02