有如下查询模型:
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/