很容易找出表A到表B中是否没有外键链接?

时间:2012-06-07 15:25:32

标签: mysql select join foreign-keys

假设我有一个表Aid列,表B有一个A_id列。 A_idid的外键。现在,如果我想从A中获取所有ID,其中B有外键链接,我可以

SELECT id FROM A JOIN B ON id = A_id

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

2 个答案:

答案 0 :(得分:3)

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

这将使用反加入:对于来自a的每条记录,它会搜索b以获取记录的id(使用b.a_id上的索引)以及是否没有找到,返回记录。

答案 1 :(得分:2)

SELECT A.id FROM
A LEFT JOIN B ON A.id = B.A_id
WHERE B.A_id IS NULL;