SQL使用相同的表进行JOIN操作

9
我正在尝试在SQL中查询,但无法解决。 我有一个名为 tCliente 的表:

enter image description here

我想要做的是与同一张表进行JOIN操作,以查找居住在同一城市的每对客户。

我尝试这样做:

SELECT DISTINCT c.codiClien, c.nombreClien, c1.codiClien, c1.nombreClien, c.ciudadClien
FROM tCliente c
INNER JOIN tCliente c1 ON c.ciudadClien = c1.ciudadClien

得到的结果是:

enter image description here

但我应该得到这个:

enter image description here

我知道我需要过滤数据,但我尝试了很多方法,也找不到解决方案。 此外,我尝试使用GROUP BY,但这是不可能的。我想按pair分组,就像这样:

...
GROUP BY c.codiClien, c1.codiClien

但这样做会导致查询出错。请问有人可以帮忙吗?谢谢。
注意:在使用INNER JOIN时,当使用ON子句时,我想知道是否“可能”这样做或者不应该这样做,因为通常的做法是使用“tb1.id = tb2.id”。
1个回答

20

您必须在内连接中排除它本身。

SELECT c.codiClien, c.nombreClien, c1.codiClien, c1.nombreClien, c.ciudadClien
FROM tCliente c
INNER JOIN tCliente c1 
    ON c.ciudadClien = c1.ciudadClien
    AND c.codiClien < c1.codiClien;

@GordonLinoff 由于 codiClien 似乎是索引。是的,聪明,谢谢。 - McNets

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接