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

news/2024/7/7 20:20:07

复现问题

  • 使用如下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

分析问题

  • 我们在解决问题之前,首先要分析问题。做到知其然,知其所以然,这样才能有所成长,进而避坑。

  • 将Column 'id' in field list is ambiguous翻译成中文就是字段列表中的列id不明确。

  • 为什么不明确这个id呢?

  • 通过如上的·mysql语句可得,application_apply表关联user表,但 application_apply表中存在id字段,而user表中也存在id字段。但如上mysql语句,并没有说明id字段是哪张表中的,因而mysql认为这个id字段是不明确的。

解决问题

  • 既然知道问题的原因,我们便可如下修改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.查询结果如下图所示:

  •  


http://lihuaxi.xjx100.cn/news/965881.html

相关文章

交叉编译和 RPC

本篇文章译自英文文档 Cross Compilation and RPC 作者是 Ziheng Jiang,Lianmin Zheng。更多 TVM 中文文档可访问 →TVM 中文站 本教程介绍了如何在 TVM 中使用 RPC 进行交叉编译和远程设备执行。 利用交叉编译和 RPC,可以实现程序在本地机器编译&…

scikit-image:遥感图像geotiff格式转mat格式

scikit-imagescikit-image 是一个专门用于图像处理的 Python 库,它可以与 Scipy 库和其他可能有助于计算的 Python 库一起使用。Github地址:https://github.com/scikit-image/scikit-image Star有5.3k首先pip安装scikit-image包,或者直接使用…

中文代码86

PK 嘚釦 docProps/PK 嘚釦諿A眎 { docProps/app.xml漅薾?糤?D?v拢W4揣狤"攃e9 睔貣m*:PAz韒g?项弇}R珁湧4嶱 ]I禑菦?櫮戵\U佳 珩 ]铒e礎??X(7弅锿?jl筀儸偛佣??z窊梈ZT炰攷 ?\ 銒沆?状尧绥>蕮 ?斬殕{do]?o乗YX?:??罢秗,泿)怟 …

基于JSP的网上书城

技术:Java、JSP等摘要:随着科技的迅速发展,计算机技术已应用到社会的各个领域。随着计算机技术和通信技术的迅速发展,网络的规模也逐渐增大,网络的元素也随之不断增加,有的利用其通信,有的利用其…

2023年总结的web前端学习路线分享(学习导读)

如果你打开了这篇文章,说明你是有兴趣想了解前端的这个行业的,以下是博主2023年总结的一些web前端的学习分享路线,如果你也想从事前端或者有这方面的想法的,请接着往下看! 前端发展前景 前端入门 巩固基础 前端工程…

Java线程池的七个参数

一、前言 1.1 线程池是什么 线程池(thread pool):线程池是一种池化技术,类似的有数据库连接池,HTTP连接池、IP池等。池化管理线程,无需额外创建和销毁线程,能避免创建过多线程导致线程频繁调度…

PAT甲级 1110 Complete Binary Tree

题目链接 PAT甲级 1110 Complete Binary Tree 思路 第一次的写法不是很好。 对于这种完全二叉树的层序遍历,比较烦人的就是空孩子使得处理很麻烦。 思来想去还是把空位置也入队比较好。 这样的话,访问到空指针的时机被推迟了一个level 而完全二叉树的…

Mysql全解[中级篇]

目录存储引擎MySQL体系结构1). 连接层2). 服务层3). 引擎层4). 存储层存储引擎介绍存储引擎特点InnoDBMyISAMMemory文件区别及特点存储引擎选择索引无索引情况有索引情况特点索引结构二叉树红黑树B-TreeBTreeMySQL中优化之后的BTreeHash索引分类聚集索引&二级索引回表查询索…