2014-08-30 33 views
1

我有兩個表:MySQL的加入2個表和凝聚了柱

表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 

這兩個表應該合併,密鑰被用來定義哪些條目應該合併WHERE KEY = '11'

如果表A中有一個日期也在表B中,則它b如果在表B中沒有表A中的日期,則B的值變爲(空) 並且在最後,應該只有1個日期字段。 列也應該是唯一的名稱..

我創造了這個示例表,我的輸出應該什麼樣子

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

進出口使用MySQL版本5.5瑪麗亞DB

有人能幫助我這裏?

回答

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; 
+0

謝謝!最後我得到了我想要展示的完美解決方案 – 2014-08-30 17:00:55

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