【发布时间】:2015-12-09 16:45:27
【问题描述】:
我有一个产品表,想选择所有的 ID 作为逗号分隔的字符串。当我运行以下查询时:
SELECT GROUP_CONCAT(p.id SEPARATOR ',') FROM products p GROUP BY 1
我收到错误:
不能在 'GROUP_CONCAT(p.id SEPARATOR ',')' 上分组
但是,如果我将查询更改为:
SELECT id, GROUP_CONCAT(p.id SEPARATOR ',') FROM products p GROUP BY 1
然后它为每个产品返回一行,其中包含两列,每列中都有一个匹配的产品 ID。这不是我想要的,但我显示此查询是为了证明选择附加列会导致错误消失。
为什么不能单独使用GROUP_CONCAT()?
【问题讨论】:
-
去掉
GROUP BY 1,它应该可以工作了。 -
原来
GROUP BY 1表示按SELECT子句中的第一个字段分组。见:dev.mysql.com/doc/refman/5.6/en/select.html