我这里有个情况。
我有两张桌子:
我需要一个 sql 查询,它将打印两个表中不同的 Col 名称。
例如,在这种情况下,查询应将结果打印为:
原因很清楚,m
表 1 中存在但表 2 中不存在。类似的情况z
在表 2 中但不在表 1 中。
我真的在这里,请帮忙。
列名不区分大小写。
谢谢。
我这里有个情况。
我有两张桌子:
我需要一个 sql 查询,它将打印两个表中不同的 Col 名称。
例如,在这种情况下,查询应将结果打印为:
原因很清楚,m
表 1 中存在但表 2 中不存在。类似的情况z
在表 2 中但不在表 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);
甚至不在:
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);
有一个专门用于此操作的功能。除了和拦截。
查找以下查询中不存在哪些值(单列结果或多列结果)
--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
您还可以使用 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
尝试:
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在这里。
我认为最简单的一个是这个
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)
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