如何通过NOT EXISTS查询识别哪些分组缺少特定数据项?
- 内容介绍
- 相关推荐
本文共计949个文字,预计阅读时间需要4分钟。
当B表的相关字段(例如:
常见错误现象:SELECT * FROM people WHERE org_id NOT IN (SELECT org_id FROM org) 查不到任何数据,但实际确实存在组织ID缺失的记录。
-
NOT IN在子查询含NULL时等价于WHERE FALSE OR UNKNOWN,整条条件失效 -
NOT EXISTS对NULL不敏感,只要子查询没匹配上就返回主表行 - MySQL/PostgreSQL/SQL Server 全部支持,语法一致,迁移成本低
查“每个用户缺哪些必选文档类型”的标准写法
这不是简单两表对比,而是需要先构造“用户 × 必选类型”的全量组合,再排除已存在的组合。核心是用 CROSS JOIN + NOT EXISTS。
本文共计949个文字,预计阅读时间需要4分钟。
当B表的相关字段(例如:
常见错误现象:SELECT * FROM people WHERE org_id NOT IN (SELECT org_id FROM org) 查不到任何数据,但实际确实存在组织ID缺失的记录。
-
NOT IN在子查询含NULL时等价于WHERE FALSE OR UNKNOWN,整条条件失效 -
NOT EXISTS对NULL不敏感,只要子查询没匹配上就返回主表行 - MySQL/PostgreSQL/SQL Server 全部支持,语法一致,迁移成本低
查“每个用户缺哪些必选文档类型”的标准写法
这不是简单两表对比,而是需要先构造“用户 × 必选类型”的全量组合,再排除已存在的组合。核心是用 CROSS JOIN + NOT EXISTS。

