SQL Join从左右表中返回空行

时间:2010-12-11 20:02:03

标签: sql mysql join

  

可能重复:
  MySQL: FULL OUTER JOIN - How do I merge one column?

真正简单的问题,但完全混淆了我自己。

说我有以下表格:

TBL1

id - count1
a - 7
b - 4
d - 2

TBL2

id - count2
a - 3
c - 4

我想创建一个提供以下结果的表:

tbl_temp

id - count1 - count2
a - 7 - 3
b - 4 - null
c - null - 4
d - 2 - null

我需要使用哪种类型的联接?

干杯,

1 个答案:

答案 0 :(得分:8)

理想情况下,您可能希望使用FULL OUTER JOIN,但它是not supported in MySQL。相反,您可以使用LEFT和RIGHT OUTER JOIN(或其他LEFT,表格颠倒)和UNION ALL结果来模拟它。

SELECT
    tbl1.id,
    tbl1.count1,
    tbl2.count2
FROM tbl1
LEFT JOIN tbl2
ON tbl1.id = tbl2.id

UNION ALL

SELECT
    tbl2.id,
    tbl1.count1,
    tbl2.count2
FROM tbl2
LEFT JOIN tbl1
ON tbl1.id = tbl2.id
WHERE tbl1.id IS NULL

ORDER BY id

结果:

id  count1  count2
a   7       3     
b   4       NULL  
c   NULL    4     
d   2       NULL