2013-02-28 142 views
2

我有两个相同行的mysql表,在这两个表上有一些信息丢失,现在我需要将两个表合并到一个表中并提供完整的信息。合并2个相同行的mysql表

这是台什么样子:

表1:

Name | Adres  | Postal 
------------------------------ 
Koen | Stationsweg | 
    | Marktplein | 4342FG 

表2:

Name | Adres  | Postal 
------------------------------ 
    | Stationsweg | 4368RT 
Bert | Marktplein | 

决赛桌需要的样子:

Name | Adres  | Postal 
------------------------------ 
Koen | Stationsweg | 4368RT 
Bert | Marktplein | 4342FG 

回答

2
SELECT MAX(COALESCE(a.Name, b.name)) name, 
     a.adres, 
     MAX(COALESCE(a.postal, b.postal)) postal 
FROM table1 a 
     LEFT JOIN table2 b 
      ON a.adres = b.adres 
GROUP BY a.adres 

,如果你要插入上述查询的结果让我们对另一个表说:table3,使用INSERT INTO...SELECT

INSERT INTO table3 (name, adres, postal) 
SELECT MAX(COALESCE(a.Name, b.name)) name, 
     a.adres, 
     MAX(COALESCE(a.postal, b.postal)) postal 
FROM table1 a 
     LEFT JOIN table2 b 
      ON a.adres = b.adres 
GROUP BY a.adres 
+0

我试着翻译您的评论 - *感谢您的回复!它现在已经修复了。*这是正确的吗?如果是这样,欢迎你':D' – 2013-02-28 14:41:05