如何解决显示顶表中不匹配的记录
表一
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 举报,一经查实,本站将立刻删除。