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

相关推荐
zxrhhm3 小时前
MySQL 8.4 LTS 数据库巡检脚本
数据库·mysql
oldking呐呐6 小时前
MySQL从入门到入土 -- 2.数据库基础
后端·mysql
Bert.Cai11 小时前
MySQL TRIM()函数详解
数据库·mysql
九皇叔叔14 小时前
MySQL 8.x 隔离级别调整
数据库·mysql·事务·隔离级别
许愿OvO16 小时前
MySQL 8.3.0 运维与集群架构实战
运维·mysql·架构
程序员张316 小时前
MySQL创建用户且只能访问指定数据库表
mysql
阿维的博客日记18 小时前
我现在能理解mvcc让读不阻塞,但是无法理解mvcc让写不阻塞??
mysql·事务·mvcc
禹凕18 小时前
MYSQL——基础知识(SQL的临时表和克隆表)
sql·mysql
jvvz afqh18 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
阿维的博客日记18 小时前
隔离性和mvcc有什么关系吗
数据库·mysql·事务·mvcc·隔离性