MySQL的 - GROUP BY GROUP_CONCAT
问题描述:
我有以下查询:MySQL的 - GROUP BY GROUP_CONCAT
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 描述:一些描述 方法:一些解决问题的方法。
基本上,一个问题可以属于一个或多个类别。我将每个问题的类别连接起来。我想要做的是按类别连接的结果对结果进行分组。因此,例如,类别为“网络”,“服务器”的组问题。
谢谢。
答
我不是MySQL用户,而是通过改变你的小组
Group By GROUP_CONCAT(DISTINCT(issue_category.`name`) SEPARATOR ', ')
答
参考SQL EXECUTION ORDER,为什么这是行不通的原因是因为在SELECT语句以便SQL要执行的最后一条语句引擎不会知道您的列别名,而将组合记录作为GROUP BY发生在SELECT之前。因此,正如Charles Bretana的答案所暗示的那样,在你的group by子句中,输入
Group By GROUP_CONCAT(DISTINCT(issue_category.`name`) SEPARATOR ', ')
。它会正常工作。
希望这可以帮助你。
错误信息是什么意思? – 2013-05-11 13:28:08
查询应该做什么?你能用文字描述还是提供样本数据和想要的输出? – 2013-05-11 13:45:41
这没有任何意义。你的目标是什么? – 2013-05-11 14:10:07