我正试图总结两个数据来源的一些数据。 表格如下:
表t<1>
auto_id | unique_column | value |
---|---|---|
1 | d1 | 10 |
2 | d2 | 5 |
3 | d3 | 15 |
Table t2
auto_id | unique_column | value |
---|---|---|
null | d3 | 5 |
null | d4 | 6 |
查询后图1中的预期数据:
auto_id | unique_column | value |
---|---|---|
1 | d1 | 10 |
2 | d2 | 5 |
3 | d3 | 20 |
4 | d4 | 6 |
为了解决这个问题,我计划做以下工作:
REPLACE INTO t1
SELECT auto_id, unique_column, SUM(value) value FROM
(
SELECT * FROM t1
UNION ALL
SELECT * FROM t2
) GROUP BY unique_column;
Issue with this query
SELECT auto_id, unique_column, SUM(value) value FROM
(
SELECT * FROM t1
UNION ALL
SELECT * FROM t2
) GROUP BY unique_column;
上述问题将给我们带来。
auto_id | unique_column | value |
---|---|---|
1 | d1 | 10 |
2 | d2 | 5 |
3 | d3 | 20 |
NULL | d4 | 6 |
这是一种征兆。 在插头中,我们将得出以下结果:
auto_id | unique_column | value |
---|---|---|
1 | d1 | 10 |
2 | d2 | 5 |
3 | d3 | 20 |
4 | d4 | 6 |
But the following query
SELECT auto_id, unique_column, SUM(value) value FROM
(
SELECT * FROM t2
UNION ALL
SELECT * FROM t1
) GROUP BY unique_column;
让我们
auto_id | unique_column | value |
---|---|---|
1 | d1 | 10 |
2 | d2 | 5 |
NULL | d3 | 20 |
NULL | d4 | 6 |
因此,插入问题将产生以下意外结果:
auto_id | unique_column | value |
---|---|---|
1 | d1 | 10 |
2 | d2 | 5 |
3 | d3 | 15 |
4 | d3 | 20 |
5 | d4 | 6 |
另一种想法是,full 外加入
,但我的sql决定不执行。 可以用我的智慧来替代什么?