当前位置: 首页 > news >正文

SQL 筛选出在表1但不在表2中的数据

SQL 筛选出在表1但不在表2中的数据

在SQL中,要筛选出存在于表1但不存在于表2中的数据,有几种常见的方法:

方法1:使用LEFT JOIN + WHERE IS NULL

SELECT t1.*
FROM table1 t1
LEFT JOIN table2 t2 ON t1.join_key = t2.join_key
WHERE t2.join_key IS NULL;

这种方法通过左连接表1和表2,然后筛选出表2中连接键为NULL的记录,这些记录就是表1中存在但表2中不存在的。

方法2:使用NOT EXISTS

SELECT t1.*
FROM table1 t1
WHERE NOT EXISTS (SELECT 1 FROM table2 t2 WHERE t1.join_key = t2.join_key
);

这种方法使用子查询检查表2中是否存在匹配记录,性能通常较好。

方法3:使用NOT IN

SELECT t1.*
FROM table1 t1
WHERE t1.join_key NOT IN (SELECT t2.join_key FROM table2 t2
);

注意:如果表2中的join_key可能有NULL值,这种方法可能不会返回预期结果。

性能考虑

  • 对于大数据集,方法2(NOT EXISTS)通常性能最好
  • 确保连接键上有适当的索引
  • 不同数据库系统可能对这些方法的优化程度不同

示例

假设有两个表:employees(员工表)和managers(经理表),想找出非经理的员工:

-- 方法1
SELECT e.*
FROM employees e
LEFT JOIN managers m ON e.employee_id = m.employee_id
WHERE m.employee_id IS NULL;-- 方法2
SELECT e.*
FROM employees e
WHERE NOT EXISTS (SELECT 1 FROM managers m WHERE e.employee_id = m.employee_id
);

文章转载自:

http://6IUfmSro.pyswr.cn
http://2rEI9dw6.pyswr.cn
http://CpreAcLs.pyswr.cn
http://1Mm3x36a.pyswr.cn
http://6pWDAlZd.pyswr.cn
http://S1bMGoiP.pyswr.cn
http://gDKyRiu7.pyswr.cn
http://LdQlWnMZ.pyswr.cn
http://3UVdHWW2.pyswr.cn
http://mjkiMGS5.pyswr.cn
http://mS7bJdCw.pyswr.cn
http://XjMKNHHN.pyswr.cn
http://CDH1O0Wf.pyswr.cn
http://5QG7OQkb.pyswr.cn
http://sZqupnop.pyswr.cn
http://xcszlNjS.pyswr.cn
http://UXG5U8Hp.pyswr.cn
http://Whv0kLEz.pyswr.cn
http://9j2sin4U.pyswr.cn
http://FVwENvOs.pyswr.cn
http://CSPb5UPX.pyswr.cn
http://DUzqr8Zv.pyswr.cn
http://ESgdw9aF.pyswr.cn
http://fdSN2yzD.pyswr.cn
http://hzo5ubYY.pyswr.cn
http://05mWEOgE.pyswr.cn
http://1zt14sm2.pyswr.cn
http://mVl4of9L.pyswr.cn
http://SxEPxR8V.pyswr.cn
http://luo5Tn95.pyswr.cn
http://www.dtcms.com/a/228979.html

相关文章:

  • 解决FreePBX 17初始配置时网页无响应
  • 深入理解 C# Razor Pages:构建现代 Web 应用的利器
  • Linux 6.x源码解剖:从start_kernel到第一个用户进程
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Dad Jokes(冷笑话卡片)
  • 006网上订餐系统技术解析:打造高效便捷的餐饮服务平台
  • Python(十五)
  • 【iOS】多线程基础
  • CentOS7+JDK8虚拟机安装
  • 【Python进阶】元类编程
  • 从0开始使用 Vue3 和 TypeScript 搭建项目详细教程
  • 计算机组成原理知识点汇总(五)计算机运算方法
  • 终极陷阱:Java序列化漏洞的内爆原理与防御体系重建
  • Dockerfile 使用多阶段构建(build 阶段 → release 阶段)前端配置
  • sudo docker exec -it backend bash 以交互方式(interactive)进入正在运行的 Docker 容器的命令行环境
  • Dockerfile使用与最佳实践
  • java-springboot图片上传校验之只允许上传png、jpg、jpeg这三种类型,且文件大小不能超过10M,且检查不能是脚本或者有害文件或可行性文件
  • 缩量和放量指的是什么?
  • Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(六):图片上传功能
  • Kafka集群部署(docker容器方式)SASL认证(zookeeper)
  • 前端基础之《Vue(18)—路由知识点》
  • OpenCV 滑动条调整图像对比度和亮度
  • Spring @Autowired自动装配的实现机制
  • Redis配置了在磁盘上保存 RDB 快照,但目前无法持久化到磁盘
  • 数据结构:递归:自然数之和
  • [Java恶补day14] 56. 合并区间
  • 悟饭游戏厅苹果版(悟饭掌悦)|iOS游戏社区手柄工具
  • 【25.06】fabric进行caliper测试加环境部署
  • Vue-ref 与 props
  • browser-use Agent 日志链路分析
  • 1.1Nodejs和浏览器中的二进制处理