MySQL关联CONTRACTS表筛选后如何对BILLS表F_SUM字段求和
实现方案
方案1:基于现有子查询逻辑修改
仅需要将原查询的字段替换为SUM()聚合函数即可,不需要改动过滤逻辑:
SELECT SUM(BILLS.F_SUM) AS total_f_sum FROM BILLS WHERE ID_CONTRACT_INST IN ( SELECT ID_CONTRACT_INST FROM CONTRACTS WHERE V_EXIT_IDENT = 1158 );
方案2:INNER JOIN关联实现(更推荐)
关联查询的执行效率通常优于子查询,尤其当表数据量较大时优势更明显:
SELECT SUM(b.F_SUM) AS total_f_sum FROM BILLS b INNER JOIN CONTRACTS c ON b.ID_CONTRACT_INST = c.ID_CONTRACT_INST WHERE c.V_EXIT_IDENT = 1158;
补充说明
- 查询结果中
total_f_sum字段就是你需要的符合条件的F_SUM总和 - 如果需要无匹配记录时返回0而非NULL,可以将聚合部分修改为
IFNULL(SUM(b.F_SUM), 0)
内容的提问来源于stack exchange,提问作者data_runner
相关产品推荐
相关产品推荐

