如何通过忽略表2中包含两列的数据来从表1中获取数据

时间:2018-11-29 06:48:02

标签: sql-server

我有两个桌子 具有两列Col1和Col2的TABLE1

Col1|Col2

A|1

A|2 

A|3

B|1

B|2

B|3

C|1

C|2

C|3

具有两列Col1和Col2的表2

Col1|Col2

A|1

B|2

B|3

我想输出为第一张表的数据,而忽略第二张表的数据。 TABLE1中的数据是两列Col1和Col2的组合

输出

Col1|Col2

A|2 

A|3

B|1

C|1

C|2

C|3

我尝试了一些解决方案

SELECT Col1, Col2 FROM  Table1 t1
 inner join Table2 t2 on
 t1.Col1 <> (t2.Col1)
 and
 t1.Col2 <> (t2.Col2)

此外,我尝试了左联接和提取,但没有得到正确的解决方案。  有人可以为上述查询提供任何解决方案。预先感谢。

3 个答案:

答案 0 :(得分:1)

SELECT t1.Col1, t1.Col2 
FROM  Table1 t1
LEFT JOIN Table2 t2 on
t1.Col1 = t2.Col1
AND t1.Col2 = t2.Col2 
WHERE t2.Col1 IS NULL

您进行了左连接,因此您从table1中获取所有内容,并通过询问是否为NULL来检查是否没有对table2造成打击

答案 1 :(得分:0)

尝试一下:

select col1 + ' ' + cast(col2 as varchar) as fullname from @tb1 
where col1 + ' ' + cast(col2 as varchar) not in (select col1 + ' ' + cast(col2 as varchar) from @tb2)

select col1,col2 from @tb1
where col1 + ' ' + cast(col2 as varchar) not in (select col1 + ' ' + cast(col2 as varchar) from @tb2)

输出

A 2
A 3
B 1
C 1
C 2
C 3

答案 2 :(得分:0)

您可以使用Not Exists忽略另一个表中存在的相同数据。

SELECT T1.Col1, T1.Col2
FROM Table1 T1
WHERE NOT EXISTS (SELECT 1/0 FROM Table2 T2 WHERE T2.Col1 = T1.Col1 AND T2.Col2 = T1.Col2)