首页 > 数据库 >MySQL查询数据在一张表不在另一张表的记录

MySQL查询数据在一张表不在另一张表的记录

时间:2022-12-29 12:13:20浏览次数:67  
标签:table2 一张 table1 查询 表不在 数据量 MySQL where select

参考:https://www.cnblogs.com/jelly12345/p/16828722.html

方法一:使用 not in,易理解,效率低,仅适用单字段匹配
适用于数据量小的情况,子表数据少,查外表的时候走外表的索引,这种情况效率还行。
弊端:子查询里面不能有为null的字段,有的话查询结果会不准。
这种方式实际是和子表做HASH连接。

select *
from table1
where id not in (select id from table2);

方法二:使用 left join,条件给上where is null,适用多字段匹配
查询数据量为两表的笛卡尔积,返回左表的全部数据,左表数据量大的话,关联查询速度也会很慢

select t1.*
from table1 t1
         left join table2 t2 on t1.id = t2.id
where t2.id is null;

方法三:适用多字段匹配

select *
from table1
where (select count(1) as num from table2 where table2.ID = table1.ID) = 0;

方法四:适用多字段匹配
适用于子查询的表数据量少的情况,not exists使用的是子表的索引,但是外表数据量大的话,速度也会很慢。
本质是对外表做loop循环,每次loop循环再对内表进行查询。

select *
from table1
where not exists(select 1 from table2 where table1.ID = table2.ID);

标签:table2,一张,table1,查询,表不在,数据量,MySQL,where,select
From: https://www.cnblogs.com/DJOSIMON/p/17012145.html

相关文章

  • MySql密码忘记怎么办?
    第一步服务netstopmysql第二步,执行指令mysqld--console--skip-grant-tables--user=mysql--shared-memory第三步,再打开一个DOS窗口执行指令,第二步的窗口不要关,......
  • mysql dump数据备份
    @echooffset"Ymd=%date:,4%%date:5,2%%date:~8,2%"D:\develop\mysql-5.7\mysql-5.7.26-winx64\bin\mysqldump-uroot-p1234--single-transaction--databasesdb>D:......
  • MySQL 数据类型基础篇
    ......
  • MySQL 数据类型基础篇
    ......
  • MySQL创建数据表基础篇
    ......
  • gin+MySQL简单实现数据库查询
    利用gin项目搭建一个简易的后端系统。一个简易的HTTP响应接口首先在go工作区的终端输入这条指令:goget-ugithub.com/gin-gonic/gin将gin项目的相关依赖保存......
  • MySQL-存储引擎架构
    MySQL是一种分层体系结构的关系数据库。一共有三层:客户(连接)层,Server层,存储引擎层。简单理解就是这三层架构。官网的解释在这里。(这个部分建议看8.0的文档,8.0文档补充了架......
  • CentOS7安装MySQL5.7
    先进入MySQLCommunityDownloads(https://dev.mysql.com/downloads/),选择使用红色红框标记的菜单MySQLCommunityServer因为我们这里示范安装的是MySQL5.7.38,所以进......
  • Linux安装MySQL 8.0.27
    cd/usr/localmkdirmysqlcdmysqlwgethttps://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz#下载可能需要几分钟tar......
  • MySQL杂谈
    重拾mysql,记点新知识1、关于外键约束,项目中一直少用外键约束,是怕删除的时候删除不掉,原来是可以设置的,关于外键约束有四种更新行为NOACTION:当在父表中删除/更新对应......