Sql server 如何在忽略表2中的数据并结合两列的基础上从表1中获取数据
我有两张桌子 表1有两列Col1和Col2Sql server 如何在忽略表2中的数据并结合两列的基础上从表1中获取数据,sql-server,Sql Server,我有两张桌子 表1有两列Col1和Col2 Col1|Col2 A|1 A|2 A|3 B|1 B|2 B|3 C|1 C|2 C|3 Col1|Col2 A|1 B|2 B|3 表2有两列Col1和Col2 Col1|Col2 A|1 A|2 A|3 B|1 B|2 B|3 C|1 C|2 C|3 Col1|Col2 A|1 B|2 B|3 我希望输出为第一个表的数据,忽略第二个表的数据。表1中的数据由两列Col1和Col2组合而成
Col1|Col2
A|1
A|2
A|3
B|1
B|2
B|3
C|1
C|2
C|3
Col1|Col2
A|1
B|2
B|3
表2有两列Col1和Col2
Col1|Col2
A|1
A|2
A|3
B|1
B|2
B|3
C|1
C|2
C|3
Col1|Col2
A|1
B|2
B|3
我希望输出为第一个表的数据,忽略第二个表的数据。表1中的数据由两列Col1和Col2组合而成
Col1|Col2
A|1
A|2
A|3
B|1
B|2
B|3
C|1
C|2
C|3
Col1|Col2
A|1
B|2
B|3
输出
Col1|Col2
A|2
A|3
B|1
C|1
C|2
C|3
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)
从表1 t1中选择Col1、Col2
内部连接表2 t2
t1.Col1(t2.Col1)
和
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上没有得到任何点击
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)
或
输出
Col1|Col2
A|2
A|3
B|1
C|1
C|2
C|3
A 2
A 3
B 1
C 1
C 2
C 3
您可以使用
不存在
忽略另一个表中的相同数据
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)
不客气。不过,在处理大数据时,此查询可能会变得有点繁重