如何完全加入Mysql?

问题描述

| 我有两个表: T1 1,一 2,b T2 2,ggg 3,hhh 我希望他们之间的结合能给我所有领域: 1,a,null,null 2,b,2,ggg null,null,3,hhh     

解决方法

        MySQL没有
FULL OUTER JOIN
,但是您可以模拟它,例如:
SELECT * FROM T1 LEFT OUTER JOIN T2 ON T1.id = T2.id
UNION ALL
SELECT * FROM T1 RIGHT OUTER JOIN T2 ON T1.id = T2.id 
    WHERE T1.id IS NULL;
一般来说:
FULL OUTER JOIN = LEFT OUTER JOIN ∪ (RIGHT OUTER JOIN ∖ INNER JOIN)
您需要削减一个内部联接(这里是从右联接开始,但是IMHO并不重要,您选择哪个联接),因为两者都返回相同的内部联接。在这里,您可以: T1 :: T2 :: 左外连接:: 正确的外部连接:: 内部联接:: 完整的外连接::     ,        如果表具有唯一的(组合)列,则可以在子查询中构建ID列表。然后,您可以使用两个外部联接来模拟完整的外部联接:
select  *
from    (
        select  col1
        from    t1
        union
        select  col1 
        from    t2
        ) ids
left join
        t1
on      ids.col1 = t1.col1
left join
        t2
on      ids.col1 = t2.col1