MySQL连接2个表并统一列

时间:2014-08-30 16:08:11

标签: mysql sql join

我有两张桌子:

表A

ID  |  DATE     | VALUE | KEY|
1     30.8.14      100    11
2     25.8.14      500    11
2     20.8.14      250    11

表B

ID  |  DATE     | VALUE | KEY|
1     30.8.14      AB     11
2     25.8.14      CD     11
3     10.8.14      EF     11

这两个表应该合并,key用于定义应合并的条目WHERE KEY = '11'

如果表A中的日期也在表B中,则它在两个值的条目上都变为 如果表A中也没有日期也在表B中,则B的值变为(null) 在最后,应该只有1个日期字段。 列也应该是唯一的名称..

我创建了这个示例表,我的输出应该是什么样子

joinedDate   | aValue | bValue
30.8.14         100       AB
25.8.14         500       CD
20.8.14         250      (null)
10.8.14        (null)     EF

我在Maria DB上使用MySQL 5.5版

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

您似乎想要full outer join,MySQL并不提供。这是一种方法:

select d.date, a.value as avalue, b.value as bvalue
from ((select date from a union
       select date from b
      )
     ) d left join
     a
     on a.date = d.date left join
     b
     on b.date = d.date;

答案 1 :(得分:1)

select a.date, a.value as avalue, b.value as bvalue
  from tablea a
  left join tableb b
    on a.date = b.date
union all
select b.date, null, b.value
  from tableb b
  left join tablea a
    on a.date = b.date
 where a.date is null

<强>小提琴: http://sqlfiddle.com/#!2/09ab9e8/4/0