【发布时间】:2023-04-10 19:38:02
【问题描述】:
$search_alls=
DB::table('a16s as A')
->select('A.id')
// ->select('A.*')
->addSelect(DB::raw('SUM(CASE WHEN B.approve = 1 ELSE 0 END) as Yshow'))
->leftjoin('a16s_likes as B', function($join) {
$join->on('A.id', '=', 'B.p_id');
})
->groupBy('A.id')
->get();
当我使用上面的 select('A.id') 时效果很好。
但是当我使用 select('A.*') 来选择所有 A cloumn 我得到了错误
SQLSTATE[42000]: Syntax error or access violation: 1055 'employee.A.name' isn't in GROUP BY
PS:employee 是我的数据库名称 A表上的列是
id name ....
1 john
2 mary
3 susan
如何通过leftjoin选择所有列? A.id 列与 B.p_id 列是一对多的关系。
【问题讨论】:
-
id是主键列吗?如果不是,则选择A.*无效。 -
在mysql中禁用only_full_group_by可能会解决这个错误
-
@TimBiegeleisen id 是主键列
-
@afsalc 非常感谢
标签: mysql laravel group-by left-join laravel-query-builder