使用内部联接的结果作为另一个联接的查询的一部分

时间:2014-06-29 21:18:53

标签: sql sqlite

我必须使用一个内部联接表中的结果,然后获取另一个链接表中不存在的记录:

high level query description

1 个答案:

答案 0 :(得分:1)

要检查值是否不在一组值中,请使用NOT IN:

SELECT *
FROM A
WHERE some_ID NOT IN (SELECT C.some_ID
                      FROM B
                      JOIN C ON ...)

或者,使用相关子查询,该子查询对外部查询中的每个记录执行单独查找:

SELECT *
FROM A
WHERE NOT EXISTS (SELECT 1
                  FROM B
                  JOIN C ON ...
                  WHERE C.some_ID = A.some_ID)

或者,使用outer join并检查哪些记录不匹配:

SELECT A.*
FROM A
LEFT JOIN (B JOIN C ON ...)
ON A.some_ID = C.some_ID
WHERE C.some_ID IS NULL