2016-08-05 103 views
0

我是MYSQL的新手,希望通過給定表(表1.2)的UNION創建一個表(Table_Result)。在表1,2中,「MEMORY」列中有一些值相同,但是相同內存的計數可以相同或不同,如下所示。我想在「MEMORY」列的基礎上創建新的表格(比如table_result),該列的最大內存數量與前面的相關列有關。與其他表相比,內存數量少的表格將包含填充「NA」(請參閱​​table_result)的其他列(NAME,CONTENT或NAME1,CONTENT1)。MySQL從兩張表的UNION中創建表

任何想法如何編寫Mysql查詢腳本來獲得結果。感謝你的幫助。

BR // RG

TABLE1 
MEMORY  NAME   CONTENT 
MEM 0110H Systemkennung DB01 
MEM 0110H Hauptversion DB03 
MEM 0110H Unterversion DB00 
MEM 0110H Patchlevel  DB04 
MEM 0200H Steuerkanal1 DB01 
MEM 0200H Steuerkanal2 DB01 
MEM 0200H Steuerkanal3 DB01 
MEM 0260H Steuerkanal35 DB01 
MEM 0210H BUE-Gruppe  DB01 
MEM 0210H Licht-Gruppe1 DB01 

TABLE2 
MEMORY  NAME1   CONTENT1 
MEM 0110H System   DB01 
MEM 0110H Hauptversion1 DB02 
MEM 0200H Steuerkanal11 DB01 
MEM 0200H Steuerkanal22 DB06 
MEM 0200H Steuerkanal34 DB05 
MEM 0200H Steuerkanal35 DB04 
MEM 0260H Steuerkanal36 DB02 
MEM 0210H BUE-Gruppe  DB01 

TABLE_RESULT 
MEMORY  NAME   CONTENT  NAME1   CONTENT1 
MEM 0110H Systemkennung DB01  System   DB01 
MEM 0110H Hauptversion DB03  Hauptversion1 DB02 
MEM 0110H Unterversion DB00  NA    NA 
MEM 0110H Patchlevel  DB04  NA    NA 
MEM 0200H Steuerkanal1 DB01  Steuerkanal11 DB01 
MEM 0200H Steuerkanal2 DB01  Steuerkanal22 DB06 
MEM 0200H Steuerkanal3 DB01  Steuerkanal34 DB05 
MEM 0200H NA    NA   Steuerkanal35 DB04 
MEM 0260H Steuerkanal35 DB01  Steuerkanal36 DB02 
MEM 0210H BUE-Gruppe  DB01  BUE-Gruppe  DB01 
MEM 0210H Licht-Gruppe1 DB01  NA    NA 

回答

0
SELECT 
    ifnull(a.MEMORY, b.MEMORY) AS MEMORY, 
    ifnull(a.NAME, 'NA') AS NAME, 
    ifnull(a.CONTENT, 'NA') AS CONTENT, 
    ifnull(b.NAME, 'NA') AS NAME1, 
    ifnull(b.CONTENT, 'NA') AS CONTENT1 
FROM TABLE1 AS a 
LEFT JOIN TABLE2 AS b ON a.MEMORY = b.MEMORY 
UNION 
SELECT 
    ifnull(a.MEMORY, b.MEMORY) AS MEMORY, 
    ifnull(a.NAME, 'NA') AS NAME, 
    ifnull(a.CONTENT, 'NA') AS CONTENT, 
    ifnull(b.NAME, 'NA') AS NAME1, 
    ifnull(b.CONTENT, 'NA') AS CONTENT1 
FROM TABLE1 AS a 
RIGHT JOIN TABLE2 AS b ON a.MEMORY = b.MEMORY 
+0

我詢問非常基本的問題抱歉。但是這裏的「a」和「b」是什麼?另外,如何創建一個存儲結果的新表格。 –

+0

嘗試了代碼,不起作用。 –

0

答案出來是象下面這樣:

MEM 0110H, Systemkennung1, DB 01, Systemkennung11, DB 01 
MEM 0110H, Systemkennung2, DB 01, Systemkennung11, DB 01 
MEM 0110H, Systemkennung3, DB 01, Systemkennung11, DB 01 
MEM 0110H, Systemkennung4, DB 01, Systemkennung11, DB 01 
MEM 0110H, Systemkennung1, DB 01, Systemkennung12, DB 01 
MEM 0110H, Systemkennung2, DB 01, Systemkennung12, DB 01 
MEM 0110H, Systemkennung3, DB 01, Systemkennung12, DB 01 
MEM 0110H, Systemkennung4, DB 01, Systemkennung12, DB 01 
MEM 0110H, Systemkennung1, DB 01, Systemkennung13, DB 01 
MEM 0110H, Systemkennung2, DB 01, Systemkennung13, DB 01 
MEM 0110H, Systemkennung3, DB 01, Systemkennung13, DB 01 
MEM 0110H, Systemkennung4, DB 01, Systemkennung13, DB 01 
MEM 0200H, Systemkennung5, DB 01, Systemkennung14, DB 01 
MEM 0200H, Systemkennung6, DB 01, Systemkennung14, DB 01 
MEM 0200H, Systemkennung7, DB 01, Systemkennung14, DB 01 
MEM 0200H, Systemkennung5, DB 01, Systemkennung15, DB 01 
MEM 0200H, Systemkennung6, DB 01, Systemkennung15, DB 01 
MEM 0200H, Systemkennung7, DB 01, Systemkennung15, DB 01 
MEM 0200H, Systemkennung5, DB 01, Systemkennung16, DB 01 
MEM 0200H, Systemkennung6, DB 01, Systemkennung16, DB 01 
MEM 0200H, Systemkennung7, DB 01, Systemkennung16, DB 01 
MEM 0200H, Systemkennung5, DB 01, Systemkennung17, DB 01 
MEM 0200H, Systemkennung6, DB 01, Systemkennung17, DB 01 
MEM 0200H, Systemkennung7, DB 01, Systemkennung17, DB 01 
MEM 0260H, Systemkennung8, DB 01, Systemkennung18, DB 01 
MEM 0210H, Systemkennung9, DB 01, Systemkennung19, DB 01 
MEM 0210H, Systemkennun10, DB 01, Systemkennung19, DB 01 
+0

您是否想加入MEMORY和CONTENT? IE,這兩個cols必須相同? – SIDU

+0

只有MEMORY列是兩個表中可以具有相同值的列。我不必檢查其他欄目。這就好像我在table1中有2個相同的MEMORY值,而在table2中有3個相同的值,那麼我的結果表將有3個值,而table1其他列將在NAME和CONTENTS列中添加NA NA。 –