我试图在SQL中查询,但我无法解决它。
我有一张表 tCliente
:
我想要做的是使用相同的表格来查找位于同一城市的每对客户。
我尝试这样做:
SELECT DISTINCT c.codiClien, c.nombreClien, c1.codiClien, c1.nombreClien, c.ciudadClien
FROM tCliente c
INNER JOIN tCliente c1 ON c.ciudadClien = c1.ciudadClien
得到这个:
但我应该这个:
我知道我必须过滤数据,但我尝试了很多东西,但我找不到解决方案。
另外,我尝试使用 GROUP BY
,但这是不可能的。我想按对进行分组,即这样的事情:
...
GROUP BY c.codiClien, c1.codiClien
但是这样做会导致查询出错。有人可以帮帮我吗?感谢
注意:
在 ON
中使用 INNER JOIN
时,我想知道是否“可能”这样做或不应该这样做,因为通常的做法是tb1.id = tb2.id
答案 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;