sql中if语句和left join的共同使用解决数据需求
要做一个需求,查出所需id哪一个是在2021-02-17之后注册的,basic_id表中是一列id,这一列id表示我们所关注的id,最终结果仅需要展示这一列id。
is_new表中是描述每个用户都是在哪个日期注册的,这里面包含了所有用户,也就是说basic_id表仅仅是这个表的子集,这时候我想查看id_set表中,哪个id是在2021-02-17之后注册的。
代码:
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,就可以解决了!
运行结果: