我有以下查询:
SELECT
issue.`sequence` AS issue_sequence,
issue.`description` AS issue_description,
GROUP_CONCAT(DISTINCT(issue_category.`name`) SEPARATOR ', ') AS issue_category_name,
GROUP_CONCAT(DISTINCT(approach.`name`) SEPARATOR ', ') AS approach_name,
issue_approach.`issue_id` AS issue_approach_issue_id,
issue_approach.`approach_id` AS issue_approach_approach_id
FROM
`approach` approach
INNER JOIN `issue_approach` issue_approach ON approach.`id` = issue_approach.`approach_id`
INNER JOIN `issue` issue ON issue_approach.`issue_id` = issue.`id`
INNER JOIN `project` project ON issue.`project` = project.`id`
INNER JOIN `tenant` tenant ON project.`tenant_id` = tenant.`id`
INNER JOIN `issue_category` issue_category ON project.`id` = issue_category.`project`
INNER JOIN `user` user ON tenant.`id` = user.`tenant_id`
WHERE user.id = 1 AND project.id = 1
GROUP BY issue_category_name
ORDER BY issue_category.`name`, issue.`sequence`
我遇到这条线的问题:
GROUP BY issue_category_name
显然,MySQL似乎不能通过GROUP_CONCAT结果的别名进行分组。 我不是SQL的专家,但有没有办法可以使用GROUP_CONCAT的结果进行分组?
样本数据;
分类:网络,服务器 问题ID:1 描述:一些描述 方法:解决问题的一些方法。
基本上,问题可能属于一个或多个类别。我正在为每个问题连接类别。我想要做的是根据类别的连接对结果进行分组。例如,类别为网络,服务器的组问题。
感谢。
答案 0 :(得分:4)
我不是MySQL用户,但将您的论坛更改为
Group By GROUP_CONCAT(DISTINCT(issue_category.`name`) SEPARATOR ', ')
答案 1 :(得分:2)
参考SQL EXECUTION ORDER,这不起作用的原因是因为select语句是要执行的最后一个语句,因此在将记录分组为GROUP BY时,sql引擎将不知道您的列别名在SELECT之前。因此,正如Charles Bretana的回答所暗示的那样,把
Group By GROUP_CONCAT(DISTINCT(issue_category.`name`) SEPARATOR ', ')
在你的group by子句中。它会正常工作。
希望这会对你有所帮助。