【发布时间】:2021-07-13 17:50:19
【问题描述】:
我目前正在使用groupBy 对串联的(书名和书名)进行分组。我有意使用groupBy,因为我还有其他列可以获取它们的平均值和总和。
我最初使用下面的代码。但它返回了一个错误。
Illuminate\Database\QueryException: SQLSTATE[42000]: 语法错误或访问冲突:1055 SELECT 列表的表达式 #1 不在 GROUP BY 子句中并且包含非聚合
Reference::select('*')
->selectRaw("CONCAT(book_name, ' ', book_author) AS book")
->groupBy('type');
如果我在 groupBy 中添加 id 列,它不会返回错误。但它没有订购,我仍然得到重复的book。
Reference::select('*')
->selectRaw("CONCAT(book_name, ' ', book_author) AS book")
->groupBy(['id', 'type']);
有人,如何正确实现这一点?
【问题讨论】:
-
一些关系数据库要求在使用“group by”时,每个选定的列必须是“group by”的一部分或使用某些聚合函数(如 max、min、sum 等)聚合。想一想当您想按类型分组时,存储引擎应该如何处理包含唯一值的列“id”?它不能简单地将这些值合并到一行中。