MySQL的使用相同的表连接,而不重复

问题描述:

我有一个表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 

试试这个:

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

尝试:

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