我在表格中有一组位置:
╔═══════════╗ ║ Locations ║ ╠═══════════╣ ║ A ║ ║ B ║ ║ C ║ ╚═══════════╝
我希望将表中的每个位置与表中的每个其他位置匹配,其中位置不相同,目前我使用此查询。
SELECT
a.PostCode AS X,
b.PostCode AS Y
FROM locations a
JOIN locations b
WHERE a.Location_ID != b.Location_ID;
这会返回一个这样的结果集。
╔═══╦═══╗ ║ X ║ Y ║ ╠═══╬═══╣ ║ B ║ A ║ ║ C ║ A ║ ║ A ║ B ║ ║ C ║ B ║ ║ A ║ C ║ ║ B ║ C ║ ╚═══╩═══╝
这不是我真正需要的,至于我的目的,对(B,A)和(A,B)是一样的,我想知道是否有办法使用SQL查询(MYSQL)生成如下结果集:
╔═══╦═══╗ ║ X ║ Y ║ ╠═══╬═══╣ ║ B ║ A ║ ║ C ║ A ║ ║ C ║ B ║ ╚═══╩═══╝
答案 0 :(得分:2)
只需将where
条件更改为>
:
SELECT a.PostCode AS X,
b.PostCode AS Y
FROM locations a CROSS JOIN
locations b
WHERE a.Location_ID > b.Location_ID;
如果您没有ON
子句,则应使用CROSS JOIN
。 MySQL是唯一允许其他JOIN
没有ON
子句的数据库。