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

相关文章

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基

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r