如何将单列数据转为单行展示?遇only_full_group_by报错求方案
解决only_full_group_by模式下GROUP_CONCAT的报错问题
要解决这个报错,只需将SELECT语句中所有非聚合列都添加到GROUP BY子句中即可——only_full_group_by模式要求查询中未使用聚合函数的列必须出现在GROUP BY里,以此保证分组逻辑的严谨性,避免出现歧义数据。
针对你的场景,修改后的SQL语句如下:
select f.title, f.release_year, f.description, f.rating, c.name, GROUP_CONCAT(CONCAT(a.first_name, ' ', a.last_name) SEPARATOR ', ') as full_name from film f join film_category fc on f.film_id = fc.film_id join category c on fc.category_id = c.category_id join film_actor fa on f.film_id = fa.film_id join actor a on fa.actor_id = a.actor_id where title = "ACADEMY DINOSAUR" group by f.title, f.release_year, f.description, f.rating, c.name
补充说明:
- 把
f.title、f.release_year、f.description、f.rating、c.name这些未使用聚合函数的列全部加入GROUP BY,完全符合only_full_group_by的规则。 - 可以给
GROUP_CONCAT加上SEPARATOR参数指定分隔符(示例中用了逗号加空格),让拼接后的姓名列表可读性更强,默认分隔符为逗号。
内容的提问来源于stack exchange,提问作者javierchia
相关产品推荐
相关产品推荐

