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

合并SQL查询实现两列求和以优化代码效率

合并两次查询实现用户关联数据求和的SQL方案

没问题,咱们可以直接用一个带聚合函数的SQL查询把两次操作合并起来,彻底避免循环遍历+多次查询的低效模式,直接一次性拿到每个用户的关联数据求和结果。

最终SQL查询

SELECT 
    u.id,
    -- 对关联用户的两列分别求和后相加,COALESCE处理NULL值避免求和出错
    SUM(COALESCE(related.add_col_1, 0)) + SUM(COALESCE(related.add_col_2, 0)) AS total_sum
FROM users u
-- 关联所有ref等于当前用户id的记录
LEFT JOIN users related ON related.ref = u.id
-- 按主用户id分组,确保每个用户对应一行求和结果
GROUP BY u.id;

关键细节说明

  • LEFT JOIN的作用:保证即使某个用户没有任何关联数据(没有ref等于其id的记录),也会在结果中保留该用户的id,求和结果为0。如果只需要保留有关联数据的用户,把LEFT JOIN换成INNER JOIN即可。
  • COALESCE函数:处理可能的NULL值——如果关联用户的add_col_1或add_col_2为NULL,用0替代,避免SUM(NULL)得到NULL的情况。
  • 聚合与分组:通过SUM()完成列的求和,GROUP BY u.id确保每个用户的关联数据被汇总到一行结果中。

如果你的需求是直接获取所有用户关联数据的总合(而非每个用户单独的求和),可以简化成下面的查询:

SELECT 
    SUM(COALESCE(add_col_1, 0)) + SUM(COALESCE(add_col_2, 0)) AS overall_total
FROM users
WHERE ref IN (SELECT id FROM users);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:54:40