可能重复:
Full Outer Join in MySQL
表A和表B有两个表 这两个表都有共同的列id
我们希望得到的结果是A中的所有记录但不是B中的记录 以及存在于B但不存在于A
中的所有记录此致 Chinta kiran
答案 0 :(得分:0)
您正在寻找MINUS SET OPERATOR:
“我们希望获得所有记录都在A但不在B中的结果”
简单方法:
SELECT A.*
FROM A
WHERE A.id not in (SELECT id FROM B)
完全外部加入
SELECT A.*
FROM A full outer join B on A.id = B.id
WHERE B.id is Null
正确的方式:
SELECT A.*
FROM A left outer join B on A.id = B.id
WHERE B.id is Null
将A更改为B,将B更改为A,以便获得所有记录都在B但不包含在A中的结果。
答案 1 :(得分:0)
我建议你阅读Coding Horror的Jeff Atwood撰写的文章A Visual Explanation of SQL Joins。
全外连接生成表A和表B中所有记录的集合,两侧的匹配记录可用。 如果没有匹配项,则缺少的一方将包含null。
答案 2 :(得分:0)
您可以使用UNION运算符,如下所示
SELECT * FROM tablea
UNION
SELECT * FROM tableb
如果你想了解更多
UNION operator
答案 3 :(得分:0)
最好用LEFT OUTER JOIN
来完成,其中谓词(WHERE
子句)确保连接的行为NULL;类似的东西:
SELECT A.* FROM A LEFT OUTER JOIN B ON A.id = B.a_id WHERE B.a_id IS NULL;