mysql中的完全外连接

时间:2011-11-11 09:05:11

标签: mysql join

  

可能重复:
  Full Outer Join in MySQL

表A和表B有两个表 这两个表都有共同的列id

我们希望得到的结果是A中的所有记录但不是B中的记录 以及存在于B但不存在于A

中的所有记录

此致 Chinta kiran

4 个答案:

答案 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;