首页/数据/SQL 速查/EXISTS 判断存在性
本包目录(311 条)

EXISTS 判断存在性

EXISTS 判断子查询是否有行:逻辑上找到首行即返回真,适合“是否存在”类过滤。

SQL 速查数据更新于 2026-10-12

示例

示例
SELECT *
FROM users u
WHERE EXISTS (
        SELECT 1 FROM orders o WHERE o.user_id = u.id
      );
写法SELECT 1 是惯例,SELECT 列表内容不参与判断
相关子查询常见形式是引用外层表的列
执行找到匹配即可短路

易错点

  • EXISTS 子查询需要连接键上的索引,否则外层每行都要全表扫一遍内表
  • EXISTS 的 SELECT 列表不参与运算,写 SELECT * 只是习惯,与性能无关

数据来源与参考

  • MySQL 8.0 Reference Manual · EXISTS Subqueries
  • PostgreSQL Documentation · EXISTS
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌