【发布时间】:2021-11-20 14:27:21
【问题描述】:
我有一个带有多个选择和单个聚合值的查询,来自一个连接表,产生了一个广泛而丑陋的 GROUP BY(因为与连接表的一对多关系)。 是这样的:
SELECT user.id, user.name, user.type, etc.
GROUP_CONCAT(car.id SEPARATOR ', ') AS cars
FROM user
INNER JOIN car ON user.id = car.userid
GROUP BY user.id, etc.
ORDER BY user.name, user.type, cars
我想去掉长的 GROUP BY,但是没有 JOIN 怎么能得到聚合值呢?有没有办法像子查询一样将值与 GROUP_CONCAT 连接在一起?
【问题讨论】:
-
您可以使用横向连接;不过,您的书面查询看起来已损坏,INNER JOIN user.id ON car.userid 是语法错误吗?
-
user.id 是表名吗?
-
已修复,谢谢!
-
先GROUP BY汽车,与用户一起加入结果。
-
从 MySQL 8.0.14 开始提供横向连接。你用的是什么版本的 MySQL?
标签: mysql sql join group-by query-optimization