SQL视图创建报错:Column 'city'歧义问题排查与修正
解决MySQL列名歧义错误并创建指定视图
错误原因
ERROR 1052 (23000): Column 'city' in field list is ambiguous 是因为查询语句中city列在多个关联表中重复存在,数据库无法确定要调用哪个表的该字段。根据需求,我们需要的是员工所在分行的城市,必须明确指定Branch表的city字段。
修正后的SQL代码
结合表关联逻辑与需求,修正后的创建视图代码如下:
CREATE VIEW vHW_#_xxxx AS SELECT p.pname AS 项目名称, CONCAT(s.fname, ' ', s.lname) AS 员工姓名, b.city AS 员工所在分行城市 FROM Working w JOIN Project p ON w.pno = p.pno JOIN Staff2 s ON w.staffNo = s.staffNo JOIN Branch b ON s.branchNo = b.branchNo GROUP BY p.pname, CONCAT(s.fname, ' ', s.lname), b.city HAVING COUNT(w.pno) > 1;
代码说明
- 给每个表设置别名(
w=Working、p=Project、s=Staff2、b=Branch),明确指定字段所属表,彻底解决列名歧义问题 - 用
CONCAT函数拼接员工的名与姓,生成完整姓名 - 通过
GROUP BY分组后,用HAVING COUNT(w.pno) > 1筛选出同一员工多次参与同一项目的记录 - 给视图字段设置中文别名,匹配需求的展示格式
内容的提问来源于stack exchange,提问作者Kevin Callejas
相关产品推荐
相关产品推荐

