Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
行和列之间匹配的SQL查询_Sql_Database_Join - Fatal编程技术网

行和列之间匹配的SQL查询

行和列之间匹配的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。我想将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
我尝试了很多选择,但我感到非常沮丧。我所有的解决方案都很糟糕,但从以下几点开始:

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);