首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel错误: 1140组列的混合(MIN(),MAX(),COUNT()

Laravel错误: 1140组列的混合(MIN(),MAX(),COUNT()
EN

Stack Overflow用户
提问于 2018-09-06 01:54:15
回答 2查看 10K关注 0票数 5

任何熟悉Laravel错误的人:

"SQLSTATE42000:语法错误或访问冲突: 1140将组列(MIN()、MAX()、COUNT()、.)与组列混合在一起是非法的,如果没有GROUP BY子句(SQL: select office,avg(q1)作为q1,avg( q2 )作为q2从feedback)“

这是我的控制器代码:

代码语言:javascript
复制
$feedback_data = DB::table('feedback')
    ->select(DB::raw('office, avg(q1) as q1, avg(q2) as q2'))
    ->get();
return view('/feedback/index')->with('feedback_data', $feedback_data);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-06 02:26:24

你必须使用groupBy()

代码语言:javascript
复制
$feedback_data = DB::table('feedback')
    ->select(DB::raw('office, avg(q1) as q1, avg(q2) as q2'))
    ->groupBy('office')
    ->get();
票数 3
EN

Stack Overflow用户

发布于 2021-04-28 11:17:43

当使用类似于MIN(),MAX(),COUNT() AVG()的agregate函数时,您必须使用GROUP BY,但根据最新的MYSQL版本,您必须将select查询中的所有列作为GROUP BY使用。

为了解决这个错误,有两种方法:

  1. 您可以在相关列.上使用
  2. 通过将严格模式设置为config/database.php false**.**,可以在中禁用严格模式。

GROUP BY已经显示在这里给出的一个答案中,所以我们将讨论严格模式,因此在默认情况下,laravel具有true的严格模式,它不允许在单列上分组,因此,如果要在单列上按组分组,则必须将严格模式设置为false

禁用“严格”模式,返回到<= MYSQL 5.6行为,同时启用“严格”模式,将其设置为MYSQL 5.7行为,我们希望禁用它,因为禁用它将允许我们在单列上按组分组。

因此,对于设置严格模式,请转到config/database.php,将严格模式设置为false

代码语言:javascript
复制
'mysql' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => false, //it will be true by default set this to false
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ],
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52195430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档