mysql - 在 Mysql 中按 DATE_FORMAT 分组错误

标签 mysql sql laravel

有如下查询模型:

return \DB::table('clients')->select(DB::raw("
            DATE_FORMAT(result_test.created_at, '%M %e %Y') AS day,
            COUNT(result_test.id) AS passed"))
            ->leftJoin('result_test', 'result_test.client_id', '=', 'clients.id')
            ->where('clients.doctor_id', $user_id)
            ->whereBetween('result_test.created_at', array($startDate, $endDate))
            ->orderBy('result_test.created_at')
            ->groupBy('day')
            ->get();

请注意:

DB::raw("
                DATE_FORMAT(result_test.created_at, '%M %e %Y') AS day,
                COUNT(result_test.id) AS passed")

之后,我尝试按 AS day 对行进行分组:

->groupBy('day')

我收到了这个错误信息:

42000/1055 - db.result_test.created_at' isn't in GROUP BY

查询有什么问题?

当我删除它时:->orderBy('result_test.created_at') 它开始工作了。为什么?

最佳答案

你得到这个是因为 'result_test.created_at' 不在选择的组中。

return \DB::table('clients')->select('result_test.created_at',DB::raw("
            DATE_FORMAT(result_test.created_at, '%M %e %Y') AS day,
            COUNT(result_test.id) AS passed"))
            ->leftJoin('result_test', 'result_test.client_id', '=', 'clients.id')
            ->where('clients.doctor_id', $user_id)
            ->whereBetween('result_test.created_at', array($startDate, $endDate))
            ->orderBy('result_test.created_at')
            ->groupBy('day')
            ->get();

希望这对您有所帮助。

关于mysql - 在 Mysql 中按 DATE_FORMAT 分组错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50657940/

相关文章:

mysql - 将多个长文本放入同一个表 mysql 中是一个好习惯吗?

php - 允许用户执行 mySQL Select 语句,同时防止 SQL 注入(inject)

c# - SQLite 数据库未打开错误

SQL 简单查询 - 多条目过滤

php - 没有命名空间的 Composer 加载类

angular - Laravel - auth()->refresh() 在 JWT AuthController 中未定义?

php - 如何在多个字段中使用Mysql FULLTEXT

sql - MySQL多表查询问题

mysql - 如何优化多次使用变量的 MySQL 查询?

php - 带有查询生成器的 Laravel 嵌套连接查询