2013-03-15 73 views
2

我有一個表instructors有以下謝靈運/數據:MySQL的使用相同的表連接,而不重複

----------------- 
|id | name  | 
----------------- 
|1 | saad  | 
|2 | imran | 
----------------- 

我想要做一個不返回重複的結果與同桌一起。

如果我做了一個簡單的連接,查詢返回4行[saad, saad], [saad, imran], [imran, imran], [imran, saad]

如果我添加一個where子句,它返回2行[saad, imran], [imran, saad]

但是,我只想返回1行,(即如果[saad, imran]已經返回,查詢不應該返回[imran, saad])。

這裏是我的查詢迄今:

SELECT DISTINCT 
    i1.name AS name1, 
    i2.name AS name2 
FROM 
    instructors i1, instructors i2 
WHERE 
    i1.name != i2.name 
ORDER BY 
    name1, name2 

回答

2

試試這個:

SELECT DISTINCT 
    i1.name AS name1, 
    i2.name AS name2 
FROM 
    instructors i1, instructors i2 
WHERE 
    i1.id < i2.id 
ORDER BY 
    name1, name2 
+0

謝謝,這適用於我的兩行,但無論表中的行數是否都能工作? – 2013-03-15 17:52:18

+0

是的,它應該適用於表中任意數量的行。 – niculare 2013-03-15 17:53:35

+0

真棒,感謝您的幫助。我會盡快接受你的回答! – 2013-03-15 17:54:14

1

嘗試:

SELECT DISTINCT 
    i1.name AS name1, 
    i2.name AS name2 
FROM 
    instructors i1, instructors i2 
WHERE 
    i1.name > i2.name 
ORDER BY 
    name1, name2 
+0

+1因爲這個工作也是如此。 – 2013-03-15 17:56:44