2016-11-19 433 views
1

我想將SQLite數據庫中的三個表合併成一個新的組合表。這三個表具有相同的列名,但第三個表缺少其中一列。下面是我想做到這一點:連接表(UNION ALL)其中一個表缺少其中一列

CREATE TABLE cobmined 
AS 
SELECT col1, col2, col3 
FROM 
    (
    SELECT col1, col2, col3 from table1 
    UNION ALL 
    SELECT col1, col2, col3 from table2 
    UNION ALL 
    SELECT col1, col2  from table3 
    ) s 
; 

只對前兩個表執行此操作時這工作,加入第三個表時,我得到的消息:

SELECTs to the left and right of UNION do not have the same number of result columns 

是否有辦法讓SQL忽略缺少的列,並在需要時將其留空(NULL)?

回答

2

NULL值添加到第三個表

CREATE TABLE cobmined 
AS 
SELECT col1, col2, col3 
FROM 
    (
    SELECT col1, col2, col3 from table1 
    UNION ALL 
    SELECT col1, col2, col3 from table2 
    UNION ALL 
    SELECT col1, col2, null from table3 
    ) s 
; 

而且,無需子查詢

CREATE TABLE cobmined 
AS 
SELECT col1, col2, col3 from table1 
UNION ALL 
SELECT col1, col2, col3 from table2 
UNION ALL 
SELECT col1, col2, null from table3 
+0

感謝Dudu的快速反應和建議。它效果很好。 –

0

我要指出,你不需要子查詢:

CREATE TABLE combined AS 
     SELECT col1, col2, col3 from table1 
     UNION ALL 
     SELECT col1, col2, col3 from table2 
     UNION ALL 
     SELECT col1, col2, NULL from table3; 

此外,您可能會發現視圖比實際表更適合您的目的。

+0

這不是有效的SQL。 –

相關問題