1. 复现问题
使用如下SQL查询数据:
SELECT
id as id,
`user`.login_name AS user_mobile,
apply_status,
( SELECT `value` FROM data_dict WHERE CODE = apply_status ) AS apply_status_value,
apply_no,
application_name,
belong_org_code,
belong_org_data_dict.`value` AS belong_org_code_value,
business_contact_name,
business_contact_mobile,
auth_way,
( SELECT `value` FROM data_dict WHERE CODE = auth_way ) AS auth_way_value,
REPLACE ( REPLACE ( apply_service_type, '"', '' ), '"', '"' ) apply_service_type,
apply_need_desc,
apply_time,
audit_time,
audit_suggest
FROM
application_apply
LEFT JOIN user ON user.id = application_apply.apply_user_id
LEFT JOIN data_dict belong_org_data_dict ON belong_org_data_dict.`code` = application_apply.belong_org_code
却报出如下错误:
即Column 'id' in field list is ambiguous
2. 分析问题
我们在解决问题之前,首先要分析问题。
做到知其然,知其所以然,这样才能有所成长,进而避坑。
将Column 'id' in field list is ambiguous
翻译成中文就是字段列表中的列id不明确
。
为什么不明确这个id
呢?
通过如上的·mysql
语句可得,application_apply
表关联user
表,但 application_apply
表中存在id
字段,而user
表中也存在id
字段。
但如上mysql
语句,并没有说明id
字段是哪张表中的,因而mysql
认为这个id
字段是不明确的。
3. 解决问题
既然知道问题的原因,我们便可如下修改SQL
语句:
SELECT
application_apply.id as id,
`user`.login_name AS user_mobile,
apply_status,
( SELECT `value` FROM data_dict WHERE CODE = apply_status ) AS apply_status_value,
apply_no,
application_name,
belong_org_code,
belong_org_data_dict.`value` AS belong_org_code_value,
business_contact_name,
business_contact_mobile,
auth_way,
( SELECT `value` FROM data_dict WHERE CODE = auth_way ) AS auth_way_value,
REPLACE ( REPLACE ( apply_service_type, '"', '' ), '"', '"' ) apply_service_type,
apply_need_desc,
apply_time,
audit_time,
audit_suggest
FROM
application_apply
LEFT JOIN user ON user.id = application_apply.apply_user_id
LEFT JOIN data_dict belong_org_data_dict ON belong_org_data_dict.`code` = application_apply.belong_org_code
即在id
前加上application_apply.
查询结果如下图所示:
4. 问题总结
Column ‘xxx‘ in field list is ambiguous
这种错误,往往存在于多表查询语句中。
多表存在相同的字段,但select
语句中并没有指名该字段属于哪张表,便报出了这种错误。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99134.html