2016-05-10 41 views
0

我見過關於如何在MySQL中完成2個表的連接的文章。我也爲多個表閱讀this,但這是我的獨特問題。如何在MySQL中多次複製FULL JOIN?

我有多個臨時表(SQL查詢的結果,但爲了簡單起見,下面的表示出)

Table1 
ID Value1 
1 A 
2 B 

Table2 
ID Value2 
2 C 
3 D 

Table3 
ID Value3 
1 E 
3 F 

Table4 
.... 

等(AT-至少10個表)。我需要的是這

ID Value1 Value2 Value3 Value4 .... 
1 A    E 
2 B  C 
3   D  F 
4 ....... 

試圖做到這一點,沒有一個完整的聯接似乎非常複雜。我可以在MySQL中實現這個最簡單的方法是什麼?

+0

你是說你想從所有這些表中獲得而不使用連接? –

+0

這應該做的伎倆:選擇 main.ID, t1.Value1, t2.Value2, t3.Value3, FROM( SELECT DISTINCT IFNULL(t1.ID,IFNULL(t2.ID,t3.ID ))ID FROM TABLE1 t1,TABLE2 t2,TABLE3 t3)main LEFT JOIN TABLE1 t1 ON main.ID = t1.ID LEFT JOIN TABLE2 t2 ON main.ID = t2.ID LEFT JOIN TABLE3 t3 ON main.ID = t3.ID –

+0

@KP - 我願意使用連接,但似乎無法找到一種優雅的方式來實現這一功能,而不需要MySQL提供的完整外連接功能。所以我願意接受任何建議。 –

回答

3

如果不想這麼多表(查詢結果)可組合加入,那麼最簡單的方法是使用工會不同的是生成ID的完整列表,離開加入所有tableson該名單:

select tid.id, table1.value, ..., tableN.value from 
    (select id from table1 
    union distinct 
    select id from table2 
    ...) tid 
left join table1 on tid.id=table1.id 
... 
left join tableN on tid.id=tableN.id