Oracle / SQL - 在另一个表中查找或者为null或可能不存在或为空的记录

时间:2012-10-11 20:01:36

标签: sql oracle

我尝试做的是返回我的人员表中的所有记录,这些记录在辅助表中不存在或者确实存在,但只有在两个特定字段之一中具有空值时才会返回。所以给出以下表格

person_id   ....
----------------
123         ....
456         ....
789         ....

p_id    colA    colB
--------------------
456     aadl
789     023j    ljlj

我会回来以下

person_id   ....
----------------
123         ....
456         ....

这是因为辅助表中不存在人123。还将返回Person 456,因为它们存在,但两列中的一列为null。

谢谢!

1 个答案:

答案 0 :(得分:0)

你可以写:

SELECT *
  FROM persons
 WHERE person_id NOT IN
        ( SELECT p_id
            FROM secondary_table
           WHERE colA IS NOT NULL
             AND colB IS NOT NULL
        )
;