MySQL如何实现两张表取差集
作者:搬运Gong 发布时间:2024-01-18 21:00:03
标签:MySQL,两张表,差集
MySQL两张表取差集
业务场景如下:
人员表中有证件号、手机号字段,这两个字段因为涉及到个人隐私问题,因此加密存储,有另外一张解密表可以和人员表进行关联,查出解密后的证件号和手机号,现在需要统计出人员表中有多少没有加密的数据,进行再次加密处理,这个时候,考虑到的就是求两张表的差集,来找出未加密的人员。
求差集 SQL 脚本
select p.* from persons p
left join CERT_CNO_PNO_TAB c ON c.PERSON_BUSINESS_ID = p.id
where p.`status` = 'person.status.allow.yes' and p.del_flag = '0'
and c.id is null;
注意看,where 语句的最后一个条件。通过 left join 连表之后,再使用右表的 c.id is null 来进行过滤,最终可以得到 person 表与 CERT_CNO_PNO_TAB 表中的差集。
结果如下:
我们来验证一下,看看求得的这个差集,在解密表中是否真的不存在。
select * from CERT_CNO_PNO_TAB where PERSON_BUSINESS_ID = '0f551c3e03e34e449e5b2e31b64efdc5';
结果如下:
可以看出,通过 left join 再加上 右表的条件过滤取的的差集,是正确的。
这种求差集的效率,远比 not in 、not exist 要快的多,小伙伴们可以尝试一下!
MySQL查两个表之间的数据差集
需要查两个表之间的差集
首先,想到的是主键直接not in
select mailbox_id from co_user where mailbox_id not in (select mailbox_id from core_mailbox);
好吧!这个是可以,但是数据多了的话,想到这个查询的逻辑有点受不住
于是再改为下面的这样:
select cu.mailbox_id,cm.mailbox_id from co_user as cu
left join core_mailbox as cm
on cu.mailbox_id = cm.mailbox_id
where cm.mailbox_id is NULL;
利用了left join的,然后进行对比,并且利用where进行筛选。
后面也在网上找了这条:
SELECT mailbox_id FROM `co_user` left join
(select mailbox_id as i from core_mailbox) as t1
on co_user.mailbox_id= t1.i where t1.i is NULL;
概念上与第二条同理。
好吧! 回顾了一下left join
SQL LEFT JOIN 关键字
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
来源:https://blog.csdn.net/qq_20315217/article/details/123542011
0
投稿
猜你喜欢
- 代码如下: <% dim fso,objFolder,objFiles dim filelist Set fso=Server.Cre
- python3.6在运行tkinter时要选择 run as Python unit-test,否则报错 ModuleNotFoundErr
- 前言开始几天,我是使用很原始的方法,自己去获取天气预报截图,再手动发送给小姐姐。连续几天之后我一想:不对呀,我怎么说也是一个程序猿,怎么能用
- 经常地我们需要编写跨平台的脚本,但是由于不同的平台的差异性,我们不得不获得当前所工作的平台(操作系统类型)。代码如下:import plat
- permuteprediction = input.view(bs, self.num_anchors, self.bbox_a
- 本文实例讲述了python实现比较两段文本不同之处的方法。分享给大家供大家参考。具体实现方法如下:# find the difference
- python的文件和路径操作函数基本上位于os和os.path模块中。os.listdir(dirname):列出dirname下的目录和文
- 在 IT 开发中,有时我们需要对结构体数组进行排序。Go 语言提供了 sort 包,其中最常用的一种是 sort.Slice() 函数。但是
- 1.简介 蒙特卡洛又称随机抽样或统计试验,就是
- 记得以前的Windows任务定时是可以正常使用的,今天试了下,发现不能正常使用了,任务计划总是挂起。接下来记录下Python爬虫定时任务的几
- 装饰器其实一直是我的一个"老大难"。这个知识点就放在那,但是拖延症。。。其实在平常写写脚本的过程中,这个知识点你可能用到
- 本文实例讲述了python双向链表原理与实现方法。分享给大家供大家参考,具体如下:双向链表一种更复杂的链表是“双向链表”或“双面链表”。每个
- 使用python3+opencv3.3.1环境将视频流保存为本地视频文件,具体内容如下1、利用opencv中的VideoCapture类获取
- python具体强大的库文件,很多功能都有相应的库文件,所以很有必要进行学习一下,其中有一个ftp相应的库文件ftplib,我们只需要其中的
- 1.Fork出来的Git仓库同步代码背景:有的时候从原仓库fork出了一个新仓库,这个新仓库做了自己的修改。可是原仓库也进行了更新,比如修复
- 本文实例讲述了Python实现识别图片内容的方法。分享给大家供大家参考,具体如下:python识别图片内容。这里我的环境为windows64
- ISNULL 使用指定的替换值替换 NULL。 &nb
- 下面给大家介绍下pandas读取CSV文件时查看修改各列的数据类型格式,具体内容如下所述:我们在调bug的时候会经常查看、修改pandas列
- pandas可以对不同索引的对象进行算术运算,如果存在不同的索引对,结果的索引就是该索引对的并集。一、算术运算a、series的加法运算 &
- 在技术问答中看到一个这样的问题,感觉相对比较常见,就单开一篇文章写下来。从纯文本格式文件 “file_in”中读取数据,格式如下:需要输出成