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

相关推荐
@yanyu6665 小时前
idea中配置tomcat
java·mysql·tomcat
hello_zzw9 小时前
docker部署MySQL主从服务集群
mysql·adb·docker
初见00112 小时前
Java MySQL 事务隔离级别深度剖析:从幻读到MVCC
mysql
nzxzn13 小时前
MYSQL第二次作业
数据库·mysql
冻咸鱼14 小时前
MySQL的CRUD
数据库·mysql·oracle
初见00115 小时前
Java MySQL 索引深度解析:从原理到最佳实践
mysql
冻咸鱼16 小时前
MySQL中表操作
android·sql·mysql·oracle
心态特好16 小时前
从缓存到分库分表:MySQL 高并发海量数据解决方案全解析
数据库·mysql·缓存
BD_Marathon16 小时前
【MySQL】管理
数据库·mysql
Go高并发架构_王工16 小时前
MySQL性能优化案例分析:从问题到解决方案
数据库·mysql·性能优化