【MySQL】如何编写 LEFT JOIN 减去 INNER JOIN 的 SQL 语句

数据模拟

员工表(employee)

id (主键ID) name (姓名)
1 小明
2 小红
3 小兰
4 小刚
5 小强

员工对应信息表(employee_info)

id (主键ID) employee_id (外键,用户表ID) sex (性别) age (年龄)
1 2 女 18
2 3 女 15
3 5 男 16

目的

查询出员工在信息表没有数据的员工姓名,效果如下

id name
1 小明
4 小刚

SQL 代码

第一种写法(LEFT OUTER JOIN 搭配 IS NULL 的写法)

sql 复制代码
SELECT e.*
FROM employee e
		LEFT OUTER JOIN employee_info ei ON e.id = ei.employee_id
WHERE ei.employee_id IS NULL

第二种写法(NOT EXISTS 写法)

sql 复制代码
SELECT e.*
FROM employee e
WHERE NOT EXISTS (
	SELECT 1
	FROM employee_info ei
	WHERE e.id = ei.employee_id 
)

参考

SQL - 如何编写从 LEFT JOIN 结果中减去 INNER JOIN 结果的 SQL 查询?

相关推荐
写后端的胖头鱼1 小时前
【高频面试题】FullText 全文索引(MySQL)
数据库·mysql·索引·全文索引
code_whiter3 小时前
01-MySQL数据库基础
数据库·mysql
vx_Biye_Design6 小时前
springboot宠物领养与救助平台64334-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·mysql·课程设计·宠物
做运维的阿瑞6 小时前
mysql数据库视图笔记:创建、修改、删除与适用场景
数据库·笔记·mysql
java1234_小锋7 小时前
【技术专题】Mysql8 数据库 - Mysql8 数据库基本操作
数据库·mysql
专业程序开发源8 小时前
springboot生命故事书制作小程序65290-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·mysql·小程序·课程设计
jason.zeng@15022078 小时前
canal做mysql的异步传输工具
数据库·mysql·linq
Shadow(⊙o⊙)8 小时前
MySQL C/C++链接MySQL使用
数据库·sql·mysql
FYKJ_20108 小时前
springboot手工蜀绣在线销售系统60947-计算机课程设计、毕业设计
java·spring boot·后端·python·mysql·spark·课程设计
Mortalbreeze8 小时前
MySQL 基础篇(五):数据操作基础 —— CRUD
linux·服务器·数据库·mysql