在不重复的情况下,使用相同的表进行MySQL连接

5

我有一个名为instructors的表格,其结构/数据如下:

-----------------
|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个回答

8

试试这个:

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

谢谢,这对我的两行有效,但是无论表中有多少行,这还能起作用吗? - Saad Imran.
太棒了,感谢你的帮助。一旦允许我,我会接受你的答案! - Saad Imran.

4

尝试:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接