首页 > 解决方案 > Sql将1行与多行之和连接起来

问题描述

第一张表:

A               id    
       1        200
2366.533        200
3408.467        200

第二张表:

    C   D       E       F   id  
    XRP 5515    5776    0   200

我的查询:

select * from table1 
join table2 on table1.id = table2.id

在两个表之间使用经典的 JOIN 语句运行我的代码后,我有以下输出:

A               C   D       E       F 
       1        XRP 5515    5776    0
2366.533        XRP 5515    5776    0
3408.467        XRP 5515    5776    0

第一列来自表 1,以下 4 列来自表 2。如您所见,右侧的列是相同的。仅仅因为实际上只有 1 个原始数据在 JOIN 期间被复制。

我想在加入时对 A 列求和,在这种情况下只保留 Table2 中的 1 行,输出如下。

      A         C   D       E       F 
      5776      XRP 5515    5776    0

标签: postgresql

解决方案


我想我可以想出一个答案:

select t2.C, t2.D, t2.E, t2.F, sum(t1) 
from (
  select * from table1 t1
  join table2 t2 on t1.id = t2.id
  ) sub
group by 1,2,3,4

推荐阅读