【问题标题】:sum two columns from two tables with SQL [closed]使用 SQL 对两个表中的两列求和 [关闭]
【发布时间】:2021-03-03 14:48:07
【问题描述】:

我有两张表,如下图:

Table1

ID count
2   33
4   89
Table 2

ID count name color
2   31   Lily  Red
3   77   Jam   Blue

我想加入两个表,根据ID求和,得到下表

Expected table

ID count name color
2   64   Lily  Red
3   77   Jam   Blue
4   89   NULL  NULL

我可以只使用一个简单的 SQL 查询吗?

这两个表可能很大,所以查询应该尽可能“简单”。非常感谢。

【问题讨论】:

  • 样本输出中的计数是否正确?
  • 感谢您的回复。我想根据 ID 对计数求和。
  • ID 2 sum count = 120 和 ID 3 sum count = 110 是怎么回事?不应该是 ID 2 sum count = 64 和 ID 3 sum count = 77 吗?
  • 很抱歉给您带来了困惑。我已经更正了数字。
  • 我真的很抱歉造成混乱。我已经更正了数字。

标签: mysql sql join sum union


【解决方案1】:
SELECT ID, SUM(`count`) `count`, MAX(name) name, MAX(color) color
FROM ( SELECT ID, `count`, NULL name, NULL color
       FROM table1
       UNION ALL
       SELECT ID, `count`, name, color
       FROM table2 ) subquery
GROUP BY ID

?

【讨论】:

    【解决方案2】:

    首先,ID必须是主键。 这应该是你想要的: 选择 id,sum(count),max(name),max(color) from ( 从 Table1 中选择 id,count,null 作为名称,null 作为颜色 联合所有 从表 2 中选择 id,count,name,color) t 按 id 分组

    【讨论】:

    • 必须是哪个表的主键?您的问题与 Akina 二十分钟前在他的回答中发布的问题相同。
    • "必须是哪个表的主键?"实际上,每个 ID 的名称和颜色都是唯一的就可以了。而且您的查询与二十分钟前 Akina 在他的回答中发布的查询相同。-----Net lag for this.
    猜你喜欢
    • 1970-01-01
    • 2018-03-22
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2013-10-01
    • 1970-01-01
    相关资源
    最近更新 更多