MySQL GROUP BY语句报错(未知列)及目标结果实现求助
问题解决:MySQL GROUP BY 错误修复与目标查询实现
错误原因分析
- 字段引用错误:
group_concat('org.org_id')里的单引号把org.org_id变成了字符串字面量,而非字段引用,MySQL无法识别这是数据表列,因此抛出Unknown column org.org_id on field list错误。 - 分组逻辑错误:当前
GROUP BY people.id, org.org_id会把每个用户和对应的单个org_id单独分组,无法实现将同一用户的所有org_id合并为逗号分隔列表的需求。
修正后的查询语句
SELECT people.name, people.id, GROUP_CONCAT(org.org_id) AS `org_id(s)` FROM people INNER JOIN org ON org.vendor = people.vendor AND org.inst_id = people.inst_id GROUP BY people.id, people.name;
关键修正点
- 移除
group_concat内的单引号,直接引用字段org.org_id - 调整
GROUP BY子句,仅按people.id和people.name分组,确保同一用户的所有关联记录被合并
执行结果
运行上述语句后,将得到与你期望一致的结果:
| name | id | org_id(s) |
|---|---|---|
| Jorge | 1 | 22,11 |
| Pete | 2 | 22,11 |
| bert | 3 | 22 |
| Omar | 4 | 10,36 |
注:如果需要让
org_id(s)内的id按固定顺序排列(比如升序),可以修改为GROUP_CONCAT(org.org_id ORDER BY org.org_id)
内容的提问来源于stack exchange,提问作者gerl
相关产品推荐
相关产品推荐

