SQL JOIN与同一个表

时间:2017-01-22 17:32:18

标签: sql

我试图在SQL中查询,但我无法解决它。 我有一张表 tCliente

enter image description here

我想要做的是使用相同的表格来查找位于同一城市的每对客户。

我尝试这样做:

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 ,但这是不可能的。我想按进行分组,即这样的事情:

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

但是这样做会导致查询出错。有人可以帮帮我吗?感谢

注意: ON 中使用 INNER JOIN 时,我想知道是否“可能”这样做或不应该这样做,因为通常的做法是tb1.id = tb2.id

1 个答案:

答案 0 :(得分:10)

您必须在内部联接中排除自己。

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;