MYSQL Duplicate column name ‘FId‘解决记录

2024-03-06 07:32

本文主要是介绍MYSQL Duplicate column name ‘FId‘解决记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前因:在优化sql的时候,在from里面嵌套子查询缩小结果集。

先写一下下面建表、连表查询的大概关系。

CREATE TABLE `table_a` (`FID` VARCHAR(32) NOT NULL COMMENT 'ID' COLLATE 'utf8_general_ci',`Fname` VARCHAR(8) NULL DEFAULT NULL COMMENT '名称' COLLATE 'utf8_general_ci',`Fphone` VARCHAR(20) NULL DEFAULT NULL COMMENT '电话' COLLATE 'utf8_general_ci',PRIMARY KEY (`FID`) USING BTREE,
)
COMMENT='a'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
CREATE TABLE `table_b` (`FID` VARCHAR(32) NOT NULL COMMENT 'ID' COLLATE 'utf8_general_ci',`Fproject` VARCHAR(8) NULL DEFAULT NULL COMMENT '名称' COLLATE 'utf8_general_ci',`FName` VARCHAR(20) NULL DEFAULT NULL COMMENT '电话' COLLATE 'utf8_general_ci',`Fseq` VARCHAR(20) NULL DEFAULT NULL COMMENT '电话' COLLATE 'utf8_general_ci',PRIMARY KEY (`FID`) USING BTREE,
)
COMMENT='b'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
CREATE TABLE `table_b` (`FID` VARCHAR(32) NOT NULL COMMENT 'ID' COLLATE 'utf8_general_ci',`Fname` VARCHAR(8) NULL DEFAULT NULL COMMENT '名称' COLLATE 'utf8_general_ci',`Ftable` VARCHAR(20) NULL DEFAULT NULL COMMENT '电话' COLLATE 'utf8_general_ci',PRIMARY KEY (`FID`) USING BTREE,
)
COMMENT='b'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
select a.Fid,a.Fname,a.Fphone,b.Fname,b.Fproject,b.Fseq,c.Ftable,c.Fname
from table_a a
left join table_ b b on a.Fid = b.Fid 
left join table_c c on a.Fid = c.Fid
where 1=1

再写一个出问题的SQL

select a.Fid,a.Fname,a.Fphone,b.Fname,b.Fproject,b.Fseq,c.Ftable,c.Fname
from (
select * from table_a a
left join table_b b on a.Fid = b.Fid 
where b.Fproject = 'xxx'
) a
left join table_ b b on a.Fid = b.Fid 
left join table_c c on a.Fid = c.Fid
where 1=1

这里运行的时候就会出现报这个错:
Duplicate column name ‘FId’

这是为什么呢?
其实原因很简单,因为在子查询里面select *了,这里不但会返回table_a的字段,也会返回table_b的字段,这两个字段重复了,知道问题就好修改了,考虑到业务上返回其实只需要table_a的字段,所以将上面子查询select *from 修改成 select a.*from就可以了。

同时说一下添加子查询的优化思路:
在from里面嵌套子查询缩小结果集,在多张大表联表查询的时候这样优化sql,性能可以提升很多的。

这篇关于MYSQL Duplicate column name ‘FId‘解决记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/779286

相关文章

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基