0
           TABLE1       
|  ID    |  NAME   |   MONEY  |  POINTS |
|  1     |  Tim    |    200   |    1    |
|  2     |  Arne   |    500   |    2    |
|  3     |  Lies   |    600   |    3    |


           TABLE2       
|  ID    |  NAME   |   MONEY  |  POINTS |
|  1     |  Tim    |    1000  |    1    |
|  2     |  Arne   |    0     |    1    |
|  3     |  Gerard |    50    |    1    |

这就是我需要通过合并它们得到的,列金钱和点的总和,如下表所示:

           TABLE3      
|  ID    |  NAME   |   MONEY  |  POINTS |
|  1     |  Tim    |    1200  |    2    |
|  2     |  Arne   |    500   |    3    |
|  3     |  Lies   |    600   |    3    |
|  4     |  Gerard |    50    |    1    |

很难找到如何使用 mysql 查询命令执行此操作。欢迎任何帮助:)

4

1 回答 1

2

使用 UNION 将两个原始表合并为一个表,然后使用 SUM 聚合生成每一行的总计。

INSERT INTO table3 (name, money, points)
SELECT name, SUM(money), SUM(points)
FROM (SELECT name, money, points FROM table1
      UNION ALL
      SELECT name, money, points FROM table2) x
GROUP BY name

这实质上实现了FULL OUTER JOIN两个表中的一个,这是 MySQL 缺乏的一个特性。

于 2013-05-12T18:10:35.513 回答