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

原生SQL在phpMyAdmin运行正常,转换为QueryBuilder时distinct使用出错求助

解决方法

你当前编写的查询构造器代码和原生SQL的差异是缺少了sales.amount求和时的distinct逻辑,直接在DB::raw中补充该关键字即可,修正后代码如下:

$results = DB::table('users')
    ->select(
        'users.id',
        'users.email',
        DB::raw('SUM(users.ca) as total_ca'),
        DB::raw('SUM(DISTINCT sales.amount) as total_distinct_sales_amount')
    )
    ->join('sales', 'users.id', '=', 'sales.user_id')
    ->groupBy('users.id', 'users.email')
    ->get();

补充说明

  • 给聚合计算结果添加别名,后续从返回结果中取值会更方便
  • 如果你的MySQL开启了严格模式,GROUP BY子句需要包含所有非聚合类型的查询字段,因此上述代码把users.email也加入了分组条件,避免执行时报错,和你原生SQL的执行逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:54:06