4

假设我有 table A,有一个id列,而 table B 有一个A_id列。A_id是 的外键id。现在,如果我想从 A 中获取 B 具有外键链接的所有 id,我可以这样做

SELECT id FROM A JOIN B ON id = A_id

但是,如何从 A 中选择 B链接到的所有 id?(不选择所有 id 并从中减去上述子集)

4

2 回答 2

3
SELECT  id
FROM    a
WHERE   id NOT IN
        (
        SELECT  a_id
        FROM    b
        )

这将使用反连接:对于来自 的每条记录a,它将搜索b记录id(使用 上的索引b.a_id),如果没有找到,则返回记录。

于 2012-06-07T15:28:36.237 回答
2
SELECT A.id FROM
A LEFT JOIN B ON A.id = B.A_id
WHERE B.A_id IS NULL;
于 2012-06-07T15:29:52.603 回答