mysql - 通过多个键合并两个 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
行。
解决方案是首先提取所有可能的键,然后加入两个表,但这变得太复杂了,我想知道是否有更简单的解决方案?
解决方案
例如,使用
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
推荐阅读
- python - 如何拆分训练和测试数据
- node.js - Node.js:如何从服务器端创建到网站端点的相对链接
- mysql - 当特定列中的所有值都等于“DONE”时,MYSQL 删除表
- r - 修改多个data.table文件的行
- scala - 为什么伴随对象的应用方法的值没有改变?
- php - .htaccess 的问题 - RewriteRule 将新 URL 附加到旧 URL
- c# - Android - 通过 CSOM 或 REST 连接到 MS Sharepoint 会导致本地文件系统 UnauthorizedAccessException
- azure-devops - 使用 subst 的 Azure Pipeline 构建代理
- api - GraphQL 查询中的分组
- python - 如何不在 Dash 中显示默认的 dcc.graph 模板?