使用计算字段连接同一个表会返回“重复”行 [关闭]
Posted
技术标签:
【中文标题】使用计算字段连接同一个表会返回“重复”行 [关闭]【英文标题】:Joining the same table with calculated fields returns "duplicated" rows [closed] 【发布时间】:2021-11-24 04:07:54 【问题描述】:我必须加入同一张表才能将每一行的某些字段与同一张表的其他字段相加。
问题是我将第 1 行与第 2 行相加,但是当查询达到第 2 行时,它给了我另一行,它将第 2 行与第 1 行相加。
例子:
TABLE
id client quantity
1 john 2
2 dave 6
3 carl 4
4 david 3
我加入同一张表以获得每行的数量总和,但结果给了我
TABLE
idClient1 idClient2 quantity1 quantity2 sum
1 2 2 6 8
2 1 6 2 8
...
在这种情况下,第一行的总和为 idClient1 = 1 + idClient2 = 2,因此我不需要总和 idClient1 = 2 + idClient2 = 1,因为第二行等于第一行。
如何避免该查询给我 2 倍相同的 IdClient1 和 idClient2 总和?
【问题讨论】:
请添加您的示例的预期结果。说出你想要什么并不容易。 我想要的结果是避免第二行,因为第一行是一样的。在没有“开”条件的情况下加入同一个表每一行都加入了所有行,这是我需要比较某个字段的总和,但问题是第 1 行与第二行加入,所以我有 Sum ti 比较,但是Aldo 第二排与第一排连接,我有相同的 Sum Teo 时间 【参考方案1】:你可以这样做:
select
a.client as client1,
b.client as client2,
a.quantity as quantity1,
b.quantity as quantity2
from my_table a
join my_table b on a.client < b.client
结果:
client1 client2 quantity1 quantity2
-------- -------- ---------- ---------
david john 3 2
carl john 4 2
dave john 6 2
carl dave 4 6
carl david 4 3
dave david 6 3
请参阅db<>fiddle 的运行示例。
键在连接谓词中。它使用不等式过滤掉对称对。
【讨论】:
这解决了我的问题,我得到了原始查询的一半结果,所以重复的结果消失了!谢谢老哥,今天我有新技能了!以上是关于使用计算字段连接同一个表会返回“重复”行 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章