我有一个名为ID1的列和一个名为ID2的列。我想折叠ID1为ID2的所有行,另一行也将ID1作为ID2。所以基本上这是在查询运行之前:
ID1 ID2
34 45
45 32
76 12
13 25
在查询运行后会是这个:
ID1 ID2
34 45
76 12
13 25
我已经尝试了很多选择,而且我非常沮丧。我所有的解决方案都破碎了但是开始这样的事情:
SELECT * FROM USERS u1 INNER JOIN USERS u2 WHERE u1.ID1 = u2.ID2 and ....
答案 0 :(得分:2)
使用ANSI SQL,您至少有以下选项
使用NOT EXISTS
SELECT *
FROM USERS u1
WHERE NOT EXISTS (SELECT * FROM USERS u2 WHERE u2.ID1 = u1.ID2)
使用LEFT JOIN
SELECT *
FROM USERS u1
LEFT OUTER JOIN USERS u2 ON u2.ID1 = u1.ID2
WHERE u2.ID1 IS NULL
并且根据您的DBMS,可能还有其他
PE。 Image here使用SQL Server或EXCEPT使用Oracle
答案 1 :(得分:1)
SELECT DISTINCT ID1
FROM USERS
WHERE ID1 NOT IN (SELECT DISTINCT ID2 FROM USERS);