sql中if语句和left join的共同使用解决数据需求
要做一个需求,查出所需id哪一个是在2021-02-17之后注册的,basic_id表中是一列id,这一列id表示我们所关注的id,最终结果仅需要展示这一列id。

is_new表中是描述每个用户都是在哪个日期注册的,这里面包含了所有用户,也就是说basic_id表仅仅是这个表的子集,这时候我想查看id_set表中,哪个id是在2021-02-17之后注册的。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DIPKkjZZ-1619664904050)(C:\Users\lizhihan_sx\AppData\Roaming\Typora\typora-user-images\image-20210429105157807.png)]](https://i-blog.csdnimg.cn/blog_migrate/b259ed56a96313e05714b4b2ef097189.png)
代码:
SELECT A.id, if(B.id is null, 0, 1) as is_new_or_not
from basic_id A
left join (
select id from is_new where dt >= '2021-02-17'
) B on B.id=A.id
使用left join的方式将两个表join起来,这时候B表就包含了原本的数据和A中的补充数据,但是A表中的补充数据在当前的B中是为null的,再使用if判断,如果为null标记为0,不为null标记为1,就可以解决了!
运行结果:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Se4zbTTZ-1619664904053)(C:\Users\lizhihan_sx\AppData\Roaming\Typora\typora-user-images\image-20210429105115847.png)]](https://i-blog.csdnimg.cn/blog_migrate/33fb813db19707628b7e842f207664ad.png)
1541

被折叠的 条评论
为什么被折叠?



