MySQL错误码1052:字段列表中customer_id列不明确如何解决
错误原因
Error Code 1052. Column 'customer_id' in field list is ambiguous 报错的核心是:你关联的
customer、payment两张表都包含customer_id字段,语句中没有明确指定该字段取自哪张表,数据库无法识别执行。
排查方式
- 首先确认所有参与关联的表的重复字段,此处
customer_id在两张关联表中都存在,属于重复字段 - 遍历
SELECT、GROUP BY、ORDER BY所有子句中用到的字段,所有重复字段都必须加表别名限定,不能直接写字段名 - 额外排查逻辑合理性:你当前GROUP BY同时加了
amount字段,会导致SUM(amount)的结果是每个用户对应每个不同消费金额的合计值,大概率不符合统计每个用户总消费的常规需求,属于隐藏的逻辑问题。
修复方案
给所有出现的customer_id加上你提前定义好的表别名即可,c.代表取customer表的字段,p.代表取payment表的字段,因为两表是通过customer_id关联的,两者值完全一致,选哪一个都可以。
如果你的需求是统计每个用户的总消费金额,修正后的SQL如下:
SELECT SUM(p.amount), c.customer_id FROM customer AS c JOIN payment p ON c.customer_id = p.customer_id GROUP BY c.customer_id ORDER BY c.customer_id LIMIT 100;
如果你确实需要按用户+消费金额分组统计,修改GROUP BY子句为GROUP BY c.customer_id, p.amount即可。
内容的提问来源于stack exchange,提问作者Cameron Mah
相关产品推荐
相关产品推荐

