You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于A表ID批量查询B表对应日志总和?SQL查询需求

正确SQL查询:获取每个ID对应的日志总和

现有两张表A和B,表A存储ID,表B存储各ID对应的日志记录,需求是从这两张表中获取每个ID及其对应的日志总和。

表结构及数据

A               B
-------        -------------
ID             ID_C     LOG
1               1        15
2               1        30
3               4        44
4               2        14
5               3        88
                3        10
                2        10

需求说明

表A的ID与表B的ID_C指代同一标识,仅字段名不同。需要得到每个ID对应的日志总和,期望结果如下:

result
--------------------
ID         SUM
1          45
4          44
2          24
3          98

错误尝试

之前使用的语句返回的是所有ID的日志总和,不符合需求:

SELECT SUM(LOG) FROM B WHERE ID_C in (SELECT ID FROM A ) ;

正确解法

需要用关联查询+分组聚合,将表A和表B通过ID/ID_C关联,然后按ID分组计算总和,有两种常用写法:

写法1:INNER JOIN 分组聚合

仅返回在表B中有对应日志记录的ID(与给出的期望结果一致):

SELECT 
    A.ID, 
    SUM(B.LOG) AS SUM
FROM A
INNER JOIN B ON A.ID = B.ID_C
GROUP BY A.ID;

写法2:LEFT JOIN 保留所有表A的ID

如果需要保留表A中所有ID(包括无日志的ID,此时SUM可通过COALESCE转为0):

SELECT 
    A.ID, 
    COALESCE(SUM(B.LOG), 0) AS SUM
FROM A
LEFT JOIN B ON A.ID = B.ID_C
GROUP BY A.ID;

内容的提问来源于stack exchange,提问作者MMB MMB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:05:32