2013-06-21 92 views
1

我在這裏有一種情況。SQL Server查詢在兩個表中查找不同名稱

我有兩個表:

enter image description here

我需要一個SQL查詢,它將打印上校的名字這是在兩個表不同。

例如,在這種情況下,查詢應該打印結果爲:

enter image description here

原因是清楚m存在於表1,但在表2不存在。 z類似於表-2中的情況,但不在表-1中。

我真的很抱歉,請幫忙。

柱面名稱不區分大小寫。

謝謝。

回答

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 here

或者:

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

SQLFiddle here

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 with Demo

或者甚至在:

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 with Demo

+0

感謝您的回覆例如,最終測試後,我會盡快給你。 – Azeem

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

這個操作有一個特別的功能。除了和INTERCEPT。

查找哪些值(單柱結果或多列結果)不存在於以下查詢

- 什麼的表A中,是不是在表B中

SELECT col1 FROM TableA 
EXCEPT 
SELECT col1 FROM TableB 

- 什麼是表B中,是不是在表格中的

SELECT col1 FROM TableB 
EXCEPT 
SELECT col1 FROM TableA 

同樣,攔截關鍵字告訴你什麼是共享

- 什麼在表A和B表

SELECT col1 FROM TableA 
INTERCEPT 
SELECT col1 FROM TableB 
0

您還可以使用FULL OUTER JOIN操作。 Visual Representation of SQL Joins

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

相關問題