我如何完全加入Mysql?

时间:2011-06-13 17:23:53

标签: mysql sql outer-join

我有两张桌子:
T1
如图1所示,
2,B

T2
2,GGG
3,嗯

我希望他们之间的联系给我所有领域:

1,A,NULL,NULL
2,B,2,GGG
null,null,3,hhh

2 个答案:

答案 0 :(得分:4)

MySQL doesn'tFULL 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)

您需要剪切一个内部联接(此处来自右联接,但恕我直言并不重要您选择哪一个),因为两者都返回相同内部联接。在这里你有:

<强> T1:

enter image description here

<强> T2:

enter image description here

LEFT OUTER JOIN:

enter image description here

RIGHT OUTER JOIN:

enter image description here

INNER JOIN:

enter image description here

FULL OUTER JOIN:

enter image description here

答案 1 :(得分:0)

如果表具有唯一的(组合)列,则可以在子查询中构建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