记一次错误解决:MySQL 1054 - Unknown column in where clause

2023-12-21 09:48

本文主要是介绍记一次错误解决:MySQL 1054 - Unknown column in where clause,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.背景介绍

这是我的表:

+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| na        | text         | YES  |     | NULL    |       |
| birthDate | datetime     | YES  |     | NULL    |       |
| class     | varchar(255) | YES  |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+

这是我想完成的任务代码(目的:将张三的班级更新为李四的):

UPDATE test.student class 
SET class = ( SELECT class FROM student WHERE student.na = '李四') 
WHEREstudent.na = '张三'

二.遇到问题,搜索,解决问题……

1.遇到的第一个问题-1054:

1054 - Unknown column ‘student.na’ in 'where clause’
于是我将代码删减,排查可能的错误

UPDATE test.student class 
SET class = 1
WHEREstudent.na = '张三'

发现上述错误仍然存在,把where子句删掉就可以执行了,报错说【'student.na’行,未识别】,我十分不解,但当我删去前面的表名”student“后执行成功!

UPDATE test.student class 
SET class = 1
WHEREna = '张三'

于是我猜想,update命令限定了某张表,列名前就不可以画蛇添足地加表名了。

然后我将完整代码改成了:

UPDATE test.student class 
SET class = ( SELECT class FROM student WHERE na = '李四') 
WHEREna = '张三'

2.又见错误-1093:

1093 - You can’t specify target table ‘class’ for update in FROM clause
它的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中),
即不能依据某字段值做判断再来更新某字段的值。

网上查了一下,是MySQL不支持这种操作的错误,都是通过”绕“来解决
(来自:https://zhidao.baidu.com/question/68619324.html)
方案一:
多嵌套一层子查询,再进行删除,
方案二:
1.创建一张临时回表,将答要删除的条件自动存入临时表中:
2.再根据临时表,删除主表数据:
3.最后删除掉临时表:

我不想再建个表,所以用了方案一:

UPDATE test.student class 
SET class = (SELECT class from( SELECT class FROM student WHERE na = '李四') )
WHEREna = '张三'

我在外面嵌套了一层【(SELECT class from(____))】

3.但是又出现了问题-1248:

(我说,这挫败感来的也太频繁了,设计得这么不直观又易出错,怪不得程序员掉头发)
1248 - Every derived table must have its own alias
继续搜索……找到答案:https://blog.csdn.net/cao478208248/article/details/28122113
“这句话的意思是说每个派生出来的表都必须有一个自己的别名……进行嵌套查询的时候子查询出来的的结果是作为一个派生表来进行上一级的查询的,所以子查询的结果必须要有一个别名“

于是我模仿着加了个【as t】

UPDATE test.student class 
SET class = (SELECT class from( SELECT class FROM student WHERE na = '李四') as t )
WHEREna = '张三'

终于成功执行!

这篇关于记一次错误解决:MySQL 1054 - Unknown column in where clause的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

解决java.lang.NullPointerException问题(空指针异常)

《解决java.lang.NullPointerException问题(空指针异常)》本文详细介绍了Java中的NullPointerException异常及其常见原因,包括对象引用为null、数组元... 目录Java.lang.NullPointerException(空指针异常)NullPointer

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

MySQL zip安装包配置教程

《MySQLzip安装包配置教程》这篇文章详细介绍了如何使用zip安装包在Windows11上安装MySQL8.0,包括下载、解压、配置环境变量、初始化数据库、安装服务以及更改密码等步骤,感兴趣的朋... 目录mysql zip安装包配置教程1、下载zip安装包:2、安装2.1 解压zip包到安装目录2.2

python安装whl包并解决依赖关系的实现

《python安装whl包并解决依赖关系的实现》本文主要介绍了python安装whl包并解决依赖关系的实现,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、什么是whl文件?二、我们为什么需要使用whl文件来安装python库?三、我们应该去哪儿下

MySQL安装时initializing database失败的问题解决

《MySQL安装时initializingdatabase失败的问题解决》本文主要介绍了MySQL安装时initializingdatabase失败的问题解决,文中通过图文介绍的非常详细,对大家的学... 目录问题页面:解决方法:问题页面:解决方法:1.勾选红框中的选项:2.将下图红框中全部改为英

MySQL 中的服务器配置和状态详解(MySQL Server Configuration and Status)

《MySQL中的服务器配置和状态详解(MySQLServerConfigurationandStatus)》MySQL服务器配置和状态设置包括服务器选项、系统变量和状态变量三个方面,可以通过... 目录mysql 之服务器配置和状态1 MySQL 架构和性能优化1.1 服务器配置和状态1.1.1 服务器选项

MySQL8.0设置redo缓存大小的实现

《MySQL8.0设置redo缓存大小的实现》本文主要在MySQL8.0.30及之后版本中使用innodb_redo_log_capacity参数在线更改redo缓存文件大小,下面就来介绍一下,具有一... mysql 8.0.30及之后版本可以使用innodb_redo_log_capacity参数来更改

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作