微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

显示顶表中不匹配的记录

如何解决显示顶表中不匹配的记录

表一

Col1 Col2 日期
A B 02/25/2020
A B 02/25/2020
A B 03/20/2020
A C 02/21/2020
select * 
from Table1 
where Date between 2020-02-20 and 2020-02-27

表 2

Col1 Col2 日期
A B 03/20/2020
D E 03/20/2020

需要比较表 1 和表 2,如果 col1 和 col 2 值相同,则不应从表 1 中显示记录

所以输出应该来自Table1

Col1 Col2 日期
A C 03/20/2020

解决方法

根据 Col1 和 Col2 从 Table1 中选择 Table2 中不存在的行。

SELECT * FROM Table1 T1
WHERE NOT EXISTS (
   SELECT 1 FROM Table2 T2 
   WHERE T1.col1 = T2.col1
     AND T1.col2 = T2.col2
)
AND T1.Date between '2020-02-20' and '2020-02-27'
,

使用外连接:

select a.* 
from Table1 a
left join Table2 b on a.col1 = b.col1
  and a.col2 = b.col2
where Date between '2020-02-20' and '2020-02-27'
and b.col1 is null

where 子句过滤没有连接的行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。