【SQL实用技巧】-- join系列

Join系列-Inner,Left,Right

数据准备

create table all_users(
    id int comment '用户id',
    name VARCHAR(20) comment '用户姓名',
    sex VARCHAR(20)  comment '性别',
    age int comment '年龄'
) comment '银行用户信息表';
insert into all_users values
(1,'张三','男',20),
(2,'李四','男',29),
(3,'王五','男',21),
(4,'赵六','女',28),
(5,'田七','女',22);
select * from all_users;


create table black_list(
    user_id int comment '用户编号',
    type VARCHAR(20)  comment '风控类型'
)comment '银行黑名单信息表';
insert into black_list values
(1,'诈骗'),
(2,'逾期'),
(3,'套现');
select * from black_list;
Inner Join

得到两个表的公共部分

查询黑名单用户
-- 写法一
select *
from all_users a
inner join black_list b
on a.id=b.user_id;
-- 写法二,省略inner
select *
from all_users a
join black_list b
on a.id=b.user_id;
-- 写法三
select *
from all_users a ,black_list b
where a.id=b.user_id;
Left Join
使用Left Join判断是否在黑名单中
select a.*,
        if(b.user_id is not null, 'YES', 'NO') `黑名单用户`
from all_users a
left join black_list b
on a.id = b.user_id;
Right Join

上述问题,使用Right Join再做一遍

select b.*,
        if(a.user_id is not null, 'YES', 'NO') flag
from black_list a
right join all_users b
on a.user_id = b.id;

左连接和右连接区别不大,掌握好Left Join 即可。

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值