首页 > 解决方案 > 在 NOT IN MySQL 中使用 UNION 子查询

问题描述

我想在 MySQL 的 not null 中使用联合子查询。查询如下所示。

SELECT s.student_id
     , s.student_name
  FROM students` s
 WHERE s.student_id NOT IN (
    SELECT student_id
      FROM free_students
     UNION
    SELECT student_id
    FROM paid_students
)

如果 UNION 子查询返回 null,则查询结果也变为 null。如何处理这类情况?

标签: mysql

解决方案


我会使用一个存在子句,其中两个实际上是:

SELECT s.student_id, s.student_name
FROM students s
WHERE NOT EXISTS (SELECT 1 FROM free_students fs WHERE s.student_id = fs.student_id) AND
      NOT EXISTS (SELECT 1 FROM paid_students ps WHERE s.student_id = ps.student_id);

推荐阅读