iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL如何实现两张表取差集
  • 213
分享到

MySQL如何实现两张表取差集

MySQL两张表取差集MySQL差集MySQL取差集 2023-02-07 11:02:35 213人浏览 薄情痞子
摘要

目录Mysql两张表取差集求差集 sql 脚本mysql查两个表之间的数据差集SQL LEFT JOIN 关键字总结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 表中的差集。

结果如下:

MySQL如何实现两张表取差集

我们来验证一下,看看求得的这个差集,在解密表中是否真的不存在。

select * from CERT_CNO_PNO_TAB where PERSON_BUSINESS_ID = '0f551c3e03e34e449e5b2e31b64efdc5';

结果如下:

MySQL如何实现两张表取差集

可以看出,通过 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) 中没有匹配的行。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL如何实现两张表取差集

本文链接: https://www.lsjlt.com/news/194403.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL如何实现两张表取差集
    目录mysql两张表取差集求差集 SQL 脚本MySQL查两个表之间的数据差集SQL LEFT JOIN 关键字总结MySQL两张表取差集 业务场景如下: 人员表中有证件号、手机号字段,这两个字段因为涉及到个人隐私问题,...
    99+
    2023-02-07
    MySQL两张表取差集 MySQL差集 MySQL取差集
  • oracle两个表怎么取差集
    要取两个表的差集,可以使用Oracle的MINUS运算符。MINUS运算符用于从第一个查询结果中减去第二个查询结果。以下是一个示例查...
    99+
    2023-08-31
    oracle
  • mysql 如何获取两个集合的交集/差集/并集
    mysql的常见场景,获取两个数据集的交集和差集 步骤 1、两个集合的结构要一致,对应的字段数,字段类型 2、将两个集合用 UNION ALL 关键字合并,这里的结果是有重复...
    99+
    2024-04-02
  • oracle怎么取两张表的并集
    要取两张表的并集,可以使用UNION操作符。具体步骤如下: 使用SELECT语句从第一张表中选择所需的列。 使用U...
    99+
    2023-10-22
    oracle
  • MySQL两张表数据合并的实现
    有一个需求, 需要从数据库中导出两张表的数据到同一个excel中 鉴于是临时的业务需求, 直接使用Navicat 进行查询并导出数据. 数据涉及到三张表 CREATE TABLE `...
    99+
    2023-01-05
    MySQL 数据合并 MySQL合并两张表
  • MySQL 两张表数据合并的实现
    有一个需求, 需要从数据库中导出两张表的数据到同一个excel中 鉴于是临时的业务需求, 直接使用Navicat 进行查询并导出数据. 数据涉及到三张表 CREATE TABLE `bigdata_qiye` ( `...
    99+
    2023-01-05
    MySQL数据合并 MySQL合并两张表
  • mysql两个表的差集怎么计算
    要计算两个表的差集,可以使用NOT IN或LEFT JOIN来实现。以下是具体的示例: 使用NOT IN: SELECT...
    99+
    2024-04-09
    mysql
  • sql两张表如何合并成一张表
    在SQL中,可以通过使用UNION操作符将两张表合并成一张表。例如,假设有两张表A和B,它们具有相同的列结构,可以使用以下语...
    99+
    2024-04-09
    sql
  • Oracle如何实现两个逗号分割的字符串以及获取交集、差集
    这篇文章主要介绍了Oracle如何实现两个逗号分割的字符串以及获取交集、差集,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Oracle数据库...
    99+
    2024-04-02
  • mysql如何求差集
    这篇文章主要介绍“mysql如何求差集”,在日常操作中,相信很多人在mysql如何求差集问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql如何求差集”的疑惑有所帮助!接...
    99+
    2024-04-02
  • thinkphp怎么实现两张表的查询
    本文小编为大家详细介绍“thinkphp怎么实现两张表的查询”,内容详细,步骤清晰,细节处理妥当,希望这篇“thinkphp怎么实现两张表的查询”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。第一步:获取数据库对象...
    99+
    2023-07-06
  • mysql如何查两个表的交集
    这篇文章主要介绍了mysql如何查两个表的交集,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql查询两个表的交集方法:1、将两个数据的数据...
    99+
    2024-04-02
  • JS如何实现数组交集、并集、差集
    这篇文章主要介绍了JS如何实现数组交集、并集、差集,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:由于下面会用到ES5的方法,低版本...
    99+
    2024-04-02
  • sql两张表纵向合并怎么实现
    在SQL中,可以使用UNION ALL语句来实现两张表的纵向合并。具体语法如下: SELECT * FROM tab...
    99+
    2024-04-09
    sql
  • php怎么实现两张不同的表分页
    这篇文章将为大家详细讲解有关php怎么实现两张不同的表分页,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php实现两张不同表分页的方法:1、创建一个PHP示例文件;2、通过“function getPag...
    99+
    2023-06-25
  • sql如何校验两个表的差值
    在SQL中,可以使用EXCEPT和INTERSECT操作符来校验两个表的差值。 1、使用EXCEPT操作符来获取第一个表中存在但第二...
    99+
    2024-04-30
    sql
  • SQL中怎么实现根据两列信息整合两张表数据
    本篇内容介绍了“SQL中怎么实现根据两列信息整合两张表数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!两...
    99+
    2024-04-02
  • MySQL如何创建三张关系表
    今天小编给大家分享一下MySQL如何创建三张关系表的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.创建学生表create&...
    99+
    2023-06-29
  • Mysql如何恢复slave上某几张表
    这篇文章给大家分享的是有关Mysql如何恢复slave上某几张表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 主库一直模拟插入数据[root@no...
    99+
    2024-04-02
  • Go获取两个时间点时间差的具体实现
    目录获取当前时间及其秒、毫秒、纳秒数获取两个时间点时间差代码获取指定时间前的时间 获取指定时间后的时间获取当前时间及其秒、毫秒、纳秒数 now := time.Now() ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作