EXISTS是 SQL 中的子查询关键字用来判断子查询是否返回结果如果子查询有返回数据→EXISTS结果为TRUE如果子查询没有返回数据→EXISTS结果为FALSE它的核心特点只要找到一条匹配数据就停止查询效率远高于IN非常适合大数据量查询。一、基础语法sqlSELECT 列名 FROM 主表 WHERE EXISTS (子查询);二、最常用场景关联查询判断存在性示例表users用户表表格idname1张三2李四3王五orders订单表表格order_iduser_id101110211032需求 1查询【有订单的用户】sqlSELECT * FROM users WHERE EXISTS ( -- 子查询关联订单表判断当前用户是否有订单 SELECT 1 FROM orders WHERE orders.user_id users.id );✅ 结果返回张三、李四需求 2查询【没有订单的用户】NOT EXISTSsqlSELECT * FROM users WHERE NOT EXISTS ( SELECT 1 FROM orders WHERE orders.user_id users.id );✅ 结果返回王五三、关键细节子查询里写什么推荐写SELECT 1不要写SELECT *EXISTS只关心有没有结果不关心查什么字段SELECT 1性能更好必须关联主表和子表子查询里必须写子表.字段 主表.字段否则会变成全表判断。EXISTS 和 IN 的区别| 关键字 | 效率 | 适用场景 ||--------|------|----------|| EXISTS | 高找到即停 | 主表小、子表大 || IN | 低全表匹配 | 子表结果少 |等价 IN 写法对比sql-- 有订单的用户IN 写法 SELECT * FROM users WHERE id IN (SELECT user_id FROM orders);四、简单示例不关联表判断固定条件判断是否存在年龄 18 的用户sqlSELECT * FROM users WHERE EXISTS (SELECT 1 FROM users WHERE age 18);如果有用户满足 → 返回所有用户如果没有 → 返回空总结EXISTS 判断子查询是否有结果常用查询存在 / 不存在关联数据的记录写法WHERE EXISTS (子查询关联主表)性能比IN更好优先使用