完美解决Column ‘xxx‘ in field list is ambiguous问题

女爷i 2024-03-26 15:12 191阅读 0赞

复现问题

  • 使用如下SQL查询数据:
  • SELECT
    id as id,

    1. `user`.login_name AS user_mobile,
    2. apply_status,
    3. ( SELECT `value` FROM data_dict WHERE CODE = apply_status ) AS apply_status_value,
    4. apply_no,
    5. application_name,
    6. belong_org_code,
    7. belong_org_data_dict.`value` AS belong_org_code_value,
    8. business_contact_name,
    9. business_contact_mobile,
    10. auth_way,
    11. ( SELECT `value` FROM data_dict WHERE CODE = auth_way ) AS auth_way_value,
    12. REPLACE ( REPLACE ( apply_service_type, '"', '' ), '"', '"' ) apply_service_type,
    13. apply_need_desc,
    14. apply_time,
    15. audit_time,
    16. audit_suggest

    FROM

    1. 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

  • 却报出如下错误:
  • 8763cf9147b74eeeb5ba70e45de9fc72.png

    Column 'id' in field list is ambiguous

分析问题

  • 我们在解决问题之前,首先要分析问题。做到知其然,知其所以然,这样才能有所成长,进而避坑。
  • 将Column ‘id’ in field list is ambiguous翻译成中文就是字段列表中的列id不明确。
  • 为什么不明确这个id呢?
  • 通过如上的·mysql语句可得,application_apply表关联user表,但 application_apply表中存在id字段,而user表中也存在id字段。但如上mysql语句,并没有说明id字段是哪张表中的,因而mysql认为这个id字段是不明确的。

解决问题

  • 既然知道问题的原因,我们便可如下修改SQL语句
  • SELECT

    1. application_apply.id as id,
    2. `user`.login_name AS user_mobile,
    3. apply_status,
    4. ( SELECT `value` FROM data_dict WHERE CODE = apply_status ) AS apply_status_value,
    5. apply_no,
    6. application_name,
    7. belong_org_code,
    8. belong_org_data_dict.`value` AS belong_org_code_value,
    9. business_contact_name,
    10. business_contact_mobile,
    11. auth_way,
    12. ( SELECT `value` FROM data_dict WHERE CODE = auth_way ) AS auth_way_value,
    13. REPLACE ( REPLACE ( apply_service_type, '"', '' ), '"', '"' ) apply_service_type,
    14. apply_need_desc,
    15. apply_time,
    16. audit_time,
    17. audit_suggest

    FROM

    1. 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.查询结果如下图所示:
  • 5626b2900f8b46fc92255e7c1c227423.png

发表评论

表情:
评论列表 (有 0 条评论,191人围观)

还没有评论,来说两句吧...

相关阅读