【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 查询?

相关推荐
ErizJ11 分钟前
MySQL|腾讯面经总结
数据库·mysql
会编程的土豆32 分钟前
MySQL DDL(数据定义语言)总结
数据库·mysql·oracle
fengxin_rou1 小时前
MySQL 核心考点全解:ACID、引擎对比、SQL 执行流程
mysql·索引·存储引擎
尘埃落定wf2 小时前
Python 数据库迁移:Alembic 太重?自己动手搭一套轻量版
数据库·python·mysql
Bert.Cai2 小时前
MySQL IFNULL()函数详解
数据库·mysql
eggrall3 小时前
MySQL数据类型
数据库·mysql
HalvmånEver3 小时前
MySQL事务(二)
数据库·mysql
会编程的土豆3 小时前
mysql数据类型
数据库·mysql
南境十里·墨染春水3 小时前
linux 学习进展 mysql 事务详解
linux·学习·mysql
南境十里·墨染春水3 小时前
linux学习进展 mysql视图详解
linux·学习·mysql