SQL替换NOT IN的几种方法总结

OT IN很好用,但效率很低,共有如下几种方法可以替换,我用几十万数据的测试,最后一种效率是最好的

select email from email where email not in(select distinct email from log);

SELECT email FROM email WHERE not exists (select email from log where log.email=email.email);

SELECT email.email, email.val FROM (SELECT email.*, log.email FROM email LEFT JOIN log ON email.email=log.email) AS res WHERE res.log.email is null;

测试表结构和数据如下

email
emailval
1a
2b
2b
3c
3c
3c
4d
4d
4d
4d
log
email
1
3
3
5
5
5
5
5

运行结果

emailval
2b
2b
4d
4d
4d
4d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值