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

Laravel 5 Query Builder左连接求和结果为0.0问题排查

问题出在单引号上!

你写的SUM('points.amount')里,单引号把points.amount变成了字符串字面量,而不是数据库字段引用。MySQL会把这个字符串转成数字0,所以SUM的结果自然就是0.0啦。

修正后的代码

把单引号去掉(或者换成反引号,字段名无特殊字符时可省略),让数据库正确识别这是字段:

\DB::table('stars')
    ->leftJoin('points', 'stars.id', '=', 'points.star_id')
    ->select(\DB::raw("stars.*, SUM(points.amount) AS total_points"))
    ->groupBy('stars.id')
    ->get();

额外实用提示

  1. 如果points.amount可能存在NULL值,建议用COALESCE把NULL转为0,避免SUM结果返回NULL:
\DB::raw("stars.*, COALESCE(SUM(points.amount), 0) AS total_points")
  1. 若使用MySQL 5.7+且开启了ONLY_FULL_GROUP_BY模式,分组时最好明确列出所有非聚合字段(不过Laravel处理stars.*时通常能自动适配,出现报错再调整即可)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:36:27