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

相关推荐
泡干脆面就番茄11 小时前
MySQL_子查询_分页查询与联合查询详解
数据库·mysql
天若有情67312 小时前
Node+MySQL小型全栈笔记项目实战课程分享
数据库·笔记·mysql
逃逸线LOF16 小时前
SpringMVC拦截器 & 异常处理机制
数据库·mysql
清晨00117 小时前
国产化数据库替代方案:openGauss 详解与 MySQL 平滑迁移实战
数据库·mysql
夜雪一千20 小时前
MySQL如何限制账号权限,最小权限原则实践
数据库·mysql
2601_9620562320 小时前
EasyMarkets易信:比特币基金流入创年内新高
人工智能·mysql
拾光Ծ20 小时前
【MySQL】复合查询、表的连接
java·数据库·sql·mysql
吃饱了得干活20 小时前
MySQL 进阶:锁与事务、执行计划、内存管理、高可用架构及 8.0 新特性
后端·mysql
Knight_AL21 小时前
MySQL 递归 CTE:WITH RECURSIVE 用法详解
android·数据库·mysql
数据狐(Datafox)21 小时前
mercadolibre.item_get 工程实战:美客多商品详情API技术解析与落地应用
java·人工智能·mysql·json