首页 > 解决方案 > 通过多个键合并两个 MySQL 表

问题描述

考虑两个表:

# table1
|key1|key2|key3|value1|
    1    2    3     10
    2    2    2     10
     
# table2
|key1|key2|key3|value2|
    1    2    3     20
    3    3    3     20

我希望能够通过现有键合并它们,以便获得:

|key1|key2|key3|value1|value2|
    1    2    3     10     20
    2    2    2     10   NULL
    3    3    3   NULL     20

如果我使用table1 LEFT JOIN table2 ON key1..3,我将松开3 3 3第二个表中的行。如果我这样做,table2 LEFT JOIN table我会松开这一2 2 2行。

解决方案是首先提取所有可能的键,然后加入两个表,但这变得太复杂了,我想知道是否有更简单的解决方案?

标签: mysqlsql

解决方案


例如,使用

SELECT key1, key2, key3, SUM(value1) value1, SUM(value2) value2
FROM ( SELECT key1, key2, key3, value1, NULL value2
       FROM table1
     UNION ALL
       SELECT key1, key2, key3, NULL, value2
       FROM table2
     ) total
GROUP BY key1, key2, key3

推荐阅读