2017-01-22 98 views
0

我試圖在SQL中進行查詢,但無法解決它。 我有一個表​​SQL與同一個表加入

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但它是不可能的。我想按,就是這樣的:

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

但在這樣做,所以我在查詢中出現錯誤。有人可以幫我嗎?由於

注: 當使用在INNER JOINON,我想知道這是否是「可能」做或不應該這樣做,因爲平常的事情是做tb1.id = tb2.id

回答

2

您必須在內部聯接上排除它自己。

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; 
+0

@McNets我也試過,但在諮詢對重複。也就是說,如果例如一對是(1,2)也出現了這對(2,1) –

+0

@GordonLinoff由於codiClien似乎是索引。是的,聰明,謝謝。 – McNets

+0

@McNets你能用文字解釋你剛剛提出的查詢的邏輯嗎?因爲我使用過<>,這與<?有區別。 –