1

我这里有个情况。

我有两张桌子:

在此处输入图像描述

我需要一个 sql 查询,它将打印两个表中不同的 Col 名称。

例如,在这种情况下,查询应将结果打印为:

在此处输入图像描述

原因很清楚,m表 1 中存在但表 2 中不存在。类似的情况z在表 2 中但不在表 1 中。

我真的在这里,请帮忙。

列名不区分大小写。

谢谢。

4

6 回答 6

1

您也可以使用 NOT EXISTS 来获得结果:

select col1
from table1 t1
where not exists (select 1
                  from table2 t2
                  where t1.col1 = t2.col1)
union all
select col1
from table2 t2
where not exists (select 1
                  from table1 t1
                  where t1.col1 = t2.col1);

请参阅带有演示的 SQL Fiddle

甚至不在:

select col1
from table1 t1
where col1 not in (select col1
                   from table2 t2)
union all
select col1
from table2 t2
where col1 not in (select col1
                   from table1 t1);

请参阅带有演示的 SQL Fiddle

于 2013-06-21T12:02:22.193 回答
0

有一个专门用于此操作的功能。除了和拦截。

查找以下查询中不存在哪些值(单列结果或多列结果)

--A表中没有B表的内容

SELECT col1 FROM TableA
EXCEPT
SELECT col1 FROM TableB

-- 表 B 中没有表 A 的内容

SELECT col1 FROM TableB
EXCEPT
SELECT col1 FROM TableA

同样,INTERCEPT 关键字告诉您共享的内容

--A表和B表有什么

SELECT col1 FROM TableA
INTERCEPT
SELECT col1 FROM TableB
于 2013-06-21T14:27:07.410 回答
0

您还可以使用 FULL OUTER JOIN 运算符。 SQL 连接的可视化表示

SELECT ROW_NUMBER() OVER(ORDER BY COALESCE(t1.Col1, t2.Col1)) AS id,       
       COALESCE(t1.Col1, t2.Col1) AS ResultCol
FROM Table1 t1 FULL JOIN Table2 t2 ON t1.Col1 = t2.Col1
WHERE t1.Col1 IS NULL OR t2.Col1 IS NULL

请参阅SQLFiddle上的示例

于 2013-06-23T21:58:59.117 回答
0

尝试:

select coalesce(t1.Col1, t2.Col1)
from [Table-1] t1
full outer join [Table-2] t2 on t1.Col1 = t2.Col1
where t1.Col1 is null or t2.Col1 is null

SQLFiddle在这里

或者:

select Col1 from
(select Col1 from [Table-1] union all select Col1 from [Table-2]) sq
group by Col1 having count(*) = 1

SQLFiddle在这里

于 2013-06-21T11:54:50.783 回答
0

我认为最简单的一个是这个

SELECT COL1 AS ResultCol FROM TABLE1 where COL1 not in (select COL2 from TABLE2) UNION SELECT COL2 AS ResultCol FROM TABLE2 where COL2 not in (select COL1 from table1)
于 2013-06-21T12:09:22.113 回答
0
declare @tab1 table(id int,col1 varchar(1))
declare @tab2 table(id int,col1 varchar(1))
INSERT INTO @tab1
    ([id], [Col1])
VALUES
    (1, 'A'),
    (2, 'B'),
    (3, 'm'),
    (4, 'c')

INSERT INTO @tab2
    ([id], [Col1])
VALUES
    (1, 'A'),
    (2, 'B'),
    (3, 'C'),
    (4, 'z')





select b.id,b.col1 from
(
select a.id,a.col1,b.col1 x from @tab1 a left join @tab2 b on a.col1 = b.col1
union
select b.id,b.col1,a.col1 x from @tab1 a right join @tab2 b on a.col1 = b.col1
 ) b
where b.x is null
于 2013-06-21T12:27:10.757 回答