行和列之间匹配的SQL查询
我有一个表,其中一列名为ID1,另一列名为ID2。我想将ID1为ID2的所有行折叠到另一个ID1为ID2的行中。因此,基本上,在运行查询之前:行和列之间匹配的SQL查询,sql,database,join,Sql,Database,Join,我有一个表,其中一列名为ID1,另一列名为ID2。我想将ID1为ID2的所有行折叠到另一个ID1为ID2的行中。因此,基本上,在运行查询之前: ID1 ID2 34 45 45 32 76 12 13 25 ID1 ID2 34 45 76 12 13 25 在运行查询后将是: ID1 ID2 34 45 45 32 76 12 13 25 ID1 ID2 34 45 76 12 13 25 我尝试了很多选择,但我感到非常沮丧。我所有的解决方案都很
ID1 ID2
34 45
45 32
76 12
13 25
ID1 ID2
34 45
76 12
13 25
在运行查询后将是:
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 ....
使用ANSI SQL,您至少有以下选项 使用不存在
SELECT *
FROM USERS u1
WHERE NOT EXISTS (SELECT * FROM USERS u2 WHERE u2.ID1 = u1.ID2)
使用左连接
SELECT *
FROM USERS u1
LEFT OUTER JOIN USERS u2 ON u2.ID1 = u1.ID2
WHERE u2.ID1 IS NULL
根据您的DBMS,可能还有其他
体育。使用SQL Server还是使用Oracle
SELECT DISTINCT ID1
FROM USERS
WHERE ID1 NOT IN (SELECT DISTINCT ID2 FROM USERS);