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

Laravel 8原生查询按厂商统计产品数量报错求助

解决Laravel 8中GROUP BY导致的SQL 1055错误

这个错误源于MySQL严格SQL模式的约束:SELECT子句里的非聚合列(未使用COUNT/SUM等聚合函数的字段)必须全部出现在GROUP BY子句中。你的查询SELECT了m.manufacturerid、m.name、m.logowidth、m.logoheight这些非聚合字段,但GROUP BY仅指定了p.manufacturer_id,因此触发了1055语法错误。

方法一:修正GROUP BY子句(推荐)

将所有SELECT中的非聚合字段添加到GROUP BY里,由于p.manufacturer_id和m.manufacturerid是关联相等的,直接使用厂商表的字段分组即可:

DB::table('products as p')
    ->select('m.manufacturerid as id','m.name','m.logowidth','m.logoheight', DB::raw('count(p.id) as total'))
    ->join('manufacturer as m','m.manufacturerid','=','p.manufacturer_id')
    ->groupBy('m.manufacturerid', 'm.name', 'm.logowidth', 'm.logoheight')
    ->orderBy('total', 'DESC')
    ->limit(5)
    ->get();

方法二:关闭MySQL严格模式(不推荐)

若暂时不想调整查询逻辑,可修改Laravel数据库配置关闭严格模式,但这会隐藏潜在的数据一致性问题:

找到项目根目录下的config/database.php,修改mysql配置项的strict参数:

'mysql' => [
    // 其他配置项...
    'strict' => false,
],

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:01:21