如何解决MySQL diff 两个相似的表,不属于类型 0 的情况,否则类型 1
假设我有如下两个表,table_a
和 table_b
几乎具有相同的数据结构:
table_a
----------------------------
id name code date_a
1 Alice code_a 2021-01-09 05:23:00
2 Edward code_b 2021-01-14 05:23:00
3 Lann code_b 2021-01-23 05:23:00
4 Anna code_c 2021-01-25 05:23:00
....
....
29999 Ben code_acbd 2021-03-31 05:23:00
table_b
----------------------------
id name code date_b
1 Alice code_a 2021-01-09 05:23:00
2 Edward code_b 2021-01-14 05:23:00
3 Lann code_b 2021-01-23 05:23:00
4 Anna code_c 2021-01-25 05:23:00
....
....
26582 Wesly code_hsdf 2021-03-14 05:23:00
我可以使用下面的 SQL 查询 3417 行 table_a
不在 table_b
中,但是如何在不在列表中时输入 0,否则输入 1?
select id from table_a
where date_a between '2021-01-01 00:00:00' and '2021-03-31 23:59:59' and id NOT in
(select * from(select a.id from table_a a left join table_b b
on a.id = b.id
where b.date_b between '2021-01-01 00:00:00' and '2021-03-31 23:59:59' )t1);
我的预期输出是在 is_in_table_b
中添加一个新列 table_a
,case when not in
type 0,else type 1
table_a
----------------------------
id name code date_a is_in_table_b
1 Alice code_a 2021-01-09 05:23:00 1
2 Edward code_b 2021-01-14 05:23:00 1
3 Kelly code_b 2021-01-23 05:23:00 0
4 Anna code_c 2021-01-25 05:23:00 1
....
....
29999 Ben code_acbd 2021-03-31 05:23:00 0
解决方法
将逻辑移至 select
子句:
select a.*,(exists (select 1
from table_b b
where b.id = a.id
)
) as is_in_table_b
from table_a a;
您的查询具有问题未描述的额外过滤条件。您可以在适当的情况下将其添加到此查询中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。