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
答
尝试:
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
谢谢,这适用于我的两行,但无论表中的行数是否都能工作? – 2013-03-15 17:52:18
是的,它应该适用于表中任意数量的行。 – niculare 2013-03-15 17:53:35
真棒,感谢您的帮助。我会尽快接受你的回答! – 2013-03-15 17:54:14