如何在忽略表2中两列组合的数据的基础上从表1中获取数据



我有两个表TABLE1,具有两列Col1和Col2

Col1|Col2
A|1
A|2 
A|3
B|1
B|2
B|3
C|1
C|2
C|3

表2有两列Col1和Col2

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)

此外,我尝试了左连接和提取,但没有得到正确的解决方案。有人能为上述问题提供任何解决方案吗。提前谢谢。

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

你做了一个左联接,所以你从表1中获取所有内容,并通过询问你是否得到空来检查你是否在表2上没有命中

您可以使用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)

试试这个:

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

最新更新