首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL别名在CASE语句的ELSE部分失败(错误代码: 1054。“字段列表”中的未知列“xxx”)

MySQL别名在CASE语句的ELSE部分失败是因为MySQL的查询执行顺序导致的。在MySQL中,查询的执行顺序是先执行FROM子句,然后是WHERE子句,接着是SELECT子句,最后是ORDER BY子句。

在SELECT子句中,别名是在执行顺序的后面阶段才会被解析和识别的。而在CASE语句中,ELSE部分是在SELECT子句之前执行的。因此,当在CASE语句的ELSE部分使用别名时,MySQL还没有识别到该别名,导致报错。

为了解决这个问题,可以使用子查询或者临时表来间接地引用别名。具体做法如下:

  1. 使用子查询:
代码语言:txt
复制
SELECT
  CASE
    WHEN condition THEN expression
    ELSE (SELECT expression FROM table) -- 使用子查询引用别名
  END AS alias
FROM table;
  1. 使用临时表:
代码语言:txt
复制
SELECT
  CASE
    WHEN condition THEN expression
    ELSE temp_table.expression -- 使用临时表引用别名
  END AS alias
FROM table
CROSS JOIN (SELECT expression FROM table) AS temp_table;

以上是解决MySQL别名在CASE语句的ELSE部分失败的方法。在实际应用中,可以根据具体情况选择合适的解决方案。

推荐的腾讯云相关产品:腾讯云数据库 MySQL

腾讯云数据库 MySQL是腾讯云提供的一种高性能、可扩展的关系型数据库服务。它基于MySQL社区版进行了优化和扩展,提供了高可用、高性能、高安全性的数据库解决方案。

产品链接地址:https://cloud.tencent.com/product/cdb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Mysql总结

函数 switch case case 要判断字段或表达式 when 常量1 then 要显示值1或者语句1; when 常量2 then 要显示值2或者语句2; ......else 要显示值n或者语句n; end # 2 case when 条件1 then 要显示值1或语句1 when 条件2 then 要显示值2或语句2 ......else 要显示值n或者语句n end 分组函数 select 分组函数,分组后字段 from 表 【where 筛选条件】 group by 分组字段 【having 分组后筛选...create table 表名{ 别名 类型[(长度) 约束], 别名 类型[(长度) 约束], 别名 类型[(长度) 约束], ......[else 语句n;] end if; # 应用场合:begin end 循环结构 分类 while loop repeat 循环控制 iterate类似于 continue 继续,结束本次循环

3.9K10

数据库常见错误码

前言 我们知道网页有他状态码,比如最常见404,500。都有他自己含义,但是,MySQL数据库里面也有他们一个错误码,相信很多同学见过但是没有注意到吧。...很多时候,进行数据库操作时候,会提示错误,但是大部分同学都会选择直接重写语句而不是先考虑如何根据错误信息来修改,其实学会看错误码,能够快速定位自己错误,更容易就能解决问题哦 那么,我们现在就介绍一下几种比较常见错误码吧...常见错误码 1.1007 我们创建一个叫test数据库时候,发现创建失败,显示错误代码为1007,错误信息是Can't create database 'test'; database exists...] 显然失败了,返回错误码是1054,错误信息是未知username 解决方法:认真检查输入字段名,看看是否对应上了 总结:1054字段名不匹配 5.1062 我们设置id是主键,主键是唯一标识...2.如果表名没有,但是你就想用这个表,可以新建一个表 3.写可能想要查表不在这个数据库,更换数据库名并且重新查询 总结:1146是当前数据库下xxx表不存在 结语 其实数据库错误码不止这么点,上面只是提出了一小部分

1K11

MySql操作-20211222

通常,我们只希望看到子集行,子集或两者组合。   SELECT语句结果称为结果集,它是行列表,每行由相同数量组成。...ORDER BY 指定用于排序列表。 8. LIMIT 限制返回行数量。 语句`SELECT`和`FROM`语句是必须,其他部分是可选。  ...`SELECT`语句允许通过`SELECT`子句中指定逗号分隔列表来查询表部分数据 ```sql SELECT       lastname, firstname, jobtitle FROM...条件表达式不能使用字段别名,否则会出现“ERROR 1054 (42S22): Unknown column”这样错误提示信息。...为字段指定别名   1. 使用 SELECT 语句查询数据时,MySQL 会显示每个 SELECT 后面指定输出字段。有时为了显示结果更加直观,我们可以为字段指定一个别名。 2.

2.2K10

MySQL基础

所谓二维表,指的是由行和组成表,如下图(就类似于Excel表格数据,有表头、有、有行, 还可以通过一关联另外一个表格某一数据)。...= 不等于 BETWEEN … AND … 某个范围内(含最小、最大值) IN(…) in之后列表值,多选一 LIKE 占位符 模糊匹配(_匹配单个字符,%匹配任意个字符) IS NULL 是...FOREIGN KEY 约束是作用于表字段,可以创建表/修改表时候添加约束。...,右连接可以查询到没有empdept 自连接查询 当前表与自身连接查询,自连接必须使用表别名 语法: SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件 ...; 自连接查询...常用操作符: 操作符 描述 IN 指定集合范围内,多选一 NOT IN 不在指定集合范围内 ANY 子查询返回列表,有任意一个满足即可 SOME 与ANY等同,使用SOME地方都可以使用ANY

1.9K10

MySQL基础(快速复习版)

,然后表再放到库 2、一个库可以有多张表,每张表具有唯一表名用来标识自己 3、表中有一个或多个又称为“字段”,相当于java“属性” 4、表每一行数据,相当于java“对象” 四、常见数据库管理系统...约束名 foreign key(字段名) references 主表(被引用)) 注意: 支持类型 可以起约束名 级约束 除了外键 不可以 表级约束 除了非空和默认 可以,但对主键无效 级约束可以一个字段上追加多个...值1,值2) 位置: 可以作为表达式放在任何位置 2、case结构 功能:实现多分支 语法1: case 表达式或字段 when 值1 then 语句1; when 值2 then 语句2; … else...语句n; end [case]; 语法2: case when 条件1 then 语句1; when 条件2 then 语句2; … else 语句n; end [case]; 位置: 可以放在任何位置...条件2 then 语句2; … else 语句n; end if; 位置: 只能放在begin end 6.4.2、循环结构 位置: 只能放在begin end 特点:都能实现循环结构 对比: ①

4.5K20

mysql操作

,类似与pyimport和c++includeselect 指名想要明确获取 *代表所有 查询常量值: select 100; select “name”;mysql不区分字符和字符串概念查询表达式...调用table用FROMselect语句 选择某一 先后顺序根据参数前后顺序决定 DISTINCT为消除重复项(参数重复项)where语句 日期参数默认是year-month-date:四位...,紧跟在每个表后使用别名跨数据库链接:不同数据库之间链接 未使用USE数据库记得加上前缀 为字段别名 便于理解,如果要查询字段有重名情况,使用别名可以区分开来 方式1:AS select 100...如果为false,则返回exp3值 和py倒装句类似 (正确 if 条件 else 错误) case函数 case 要判断字段或表达式 when 常量1 then 要显示值1或语句1 when...常量2 then 要显示值2或语句2 else 要显示值n或语句n end 等值判断 select salary 原始工资,departmant_id, CASE department_id WHEN

9710

MySQL数据库完整知识点梳理----保姆级教程!!!

MySQL数据库完整知识点梳理 基础查询部分知识点 语法 查询表单个字段 查询表多个字段 查询表所有字段 查询常量值 查询表达式 查询函数 起别名 去重 +号作用 concat函数---...case,if,ifnull函数,返回值位置,不单单可以使用常量,还可以使用字段 用elt函数判断连续整数数字(从1开始),比case方便 FIELD函数返回字符串列表索引值 分组函数-...c++cout语句 查询列表可以是: 表字段,常量值,表达式,函数 查询结果是一个虚拟表格 查询表单个字段 select name from stu; 查询表多个字段 select...then 返回值1(或语句1;) when 要判断值 then 返回值2(或语句2;) ... else 返回值n(或语句n;) end (case) ; 情况2:类似java多重if语句,...值满足条件或者成立,执行对应then后面的语句,并且结束case 如果都不满足,执行else里面的语句或值 else可以省略,如果else省略了,并且所有的when条件都不满足,返回null --

5.8K10

MySQL数据库常见报错案例与错误代码说明

-报错4: Table ‘xxx’ already exists 问题分析:  xxx表已经存在于库,再次创建这个名字表就会引发该错误。...Mysql常见错误代码说明: 130 :文件格式不正确 145 :文件无法打开 1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败...数据表已存在 1051:数据表不存在 1054字段不存在 1065:无效 SQL 语句,SQL 语句为空 1081:不能建立 Socket 连接 1114:数据表已满,不能容纳任何记录 1116:打开数据表太多...1129:数据库出现异常,请重启数据库 1130:连接数据库失败,没有连接数据库权限 1133:数据库用户不存在 1141:当前用户无权访问数据库 1142:当前用户无权访问数据表 1143:当前用户无权访问数据表字段...这个错误原因很简单,客户没有足够内存存储全部结果。 2013:远程连接数据库是有时会有这个问题,MySQL 服务器执行一条 SQL 语句时候失去了连接造成

1.9K21

MySQL 常见错误代码说明

mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.xxx',MASTER_LOG_POS=xxx; 维护过MySQL运维或DBA都知道,经常会遇到一些错误信息中有一些类似...这也给我们排错造成了一定阻碍。 所以,今天民工哥就把主从同步过程中一些常见错误代码,它具体说明给大家整理出来了。 MySQL常见错误代码说明: 130 :文件格式不正确。...1044:当前用户没有访问数据库权限 1045:不能连接数据库,用户名或密码错误 1048:字段不能为空 1049:数据库不存在 1050:数据表已存在 1051:数据表不存在 1054字段不存在...这个错误原因很简单,客户没有足够内存存储全部结果。 2013:远程连接数据库是有时会有这个问题,MySQL 服务器执行一条 SQL 语句时候失去了连接造成。...10048:建议my.ini文件修改最大连接数, 把 mysql_connect() 方法都改成了 mysql_pconnect() 方法.

2.3K50

MySQL 子查询

当 WHERE 条件子查询返回多行数据时,不能再使用普通比较运算符,因为它们不支持单个值和多个值比较;如果想要判断某个字段是否子查询返回数据列表,可以将子查询与 IN、ALL、ANY/SOME...= IN 操作符 IN 操作符表示表达式是否子查询结果,如果在,如返回 TRUE。...[AS] tbl_name 子句是强制性,因为 FROM 子句中每个表都必须有一个名称。 派生表任何都必须具有唯一名称。tbl_name 后面可以跟一个带括号派生表列名称列表。...MySQL 会忽略此类子查询 SELECT 列表,因此没有区别。 对于前面的示例,如果 t2 包含任何行,甚至只包含 NULL 值行,则 EXISTS 条件为 TRUE。...(42S22): Unknown column 'd.id' in 'where clause' 该语句失败原因在于子查询 t 不能引用外查询 department 表。

20210

mysql学习总结04 — SQL数据操作

'); 4.3 蠕虫复制 从已有数据获取数据并插入到数据表 基本语法:insert into () select */ from ; mysql> insert...group by 分组,此时 where 已执行完毕 having group by 分组之后,可以使用聚合函数或字段别名 (where从表取出数据,别名在数据进入内存后才有) 注意: having...纵向合并,字段数不变,多个查询记录数合并 9.1 应用场景 将同一张表不同结果(需要对应多条查询语句来实现),合并到一起展示数据 最常见:在数据量大情况下对表进行分表操作,需要对每张表进行部分数据统计...永远只保留第一个select语句对应字段联合查询,如果要使用order by,那么对应select语句必须使用括号括起来 order by 联合查询若要生效,必须配合使用 limit +...where子查询:子查询出现位置where条件(标量、、行子查询) from子查询:子查询出现位置from数据源,做数据源(表子查询) 11.1 标量子查询 标量子查询:子查询结果是一个数据

5.1K30

MySQL DQL 子查询

当 WHERE 条件子查询返回多行数据时,不能再使用普通比较运算符,因为它们不支持单个值和多个值比较;如果想要判断某个字段是否子查询返回数据列表,可以将子查询与 IN、ALL、ANY/SOME...= IN 操作符 IN 操作符表示表达式是否子查询结果,如果在返回 TRUE。...[AS] tbl_name 子句是强制性,因为 FROM 子句中每个表都必须有一个名称。 派生表任何都必须具有唯一名称。tbl_name 后面可以跟一个带括号派生表列名称列表。...MySQL 会忽略此类子查询 SELECT 列表,因此没有区别。 对于前面的示例,如果 t2 包含任何行,甚至只包含 NULL 值行,则 EXISTS 条件为 TRUE。...(42S22): Unknown column 'd.id' in 'where clause' 该语句失败原因在于子查询 t 不能引用外查询 department 表。

5500

MySQL 常见错误代码说明

mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.xxx',MASTER_LOG_POS=xxx; 维护过MySQL运维或DBA都知道,经常会遇到一些错误信息中有一些类似...这也给我们排错造成了一定阻碍。 所以,今天民工哥就把主从同步过程中一些常见错误代码,它具体说明给大家整理出来了。 MySQL常见错误代码说明: 130 :文件格式不正确。...1044:当前用户没有访问数据库权限 1045:不能连接数据库,用户名或密码错误 1048:字段不能为空 1049:数据库不存在 1050:数据表已存在 1051:数据表不存在 1054字段不存在...这个错误原因很简单,客户没有足够内存存储全部结果。 2013:远程连接数据库是有时会有这个问题,MySQL 服务器执行一条 SQL 语句时候失去了连接造成。...10048:建议my.ini文件修改最大连接数, 把 mysql_connect() 方法都改成了 mysql_pconnect() 方法.

1.5K21

《SQL必知必会》读书笔记

如果是计算字段通常需要重命名。 部分数据库实现视图只是一个只读列表,不能通过修改视图修改底层数据。 视图不能索引,也不能有关联触发器或默认值。 与表一样,视图必须唯一命名。...SELECT 语句执行次序 函数操作 函数操作部分包含函数和计算字段部分,因为存储过程基本就是调各种函数,所以这里放到一块整理。...另外一种情况是使用case when语句中通常会有AS用法,当然更多写法是某些需要计算产生case when临时结果需要对于进行重命名方便ORM进行映射。...: --简单case函数 case sex when '1' then '男' when '2' then '女’ else '其他' end AS gender 别名还有其他用途,常见用途包括实际表列名包含不合法字符...NOT IN 与未知值比较时返回 0 条记录 由于“NULL”是未知,因此可能值列表包含“NULL”或“NULL”“NOT IN”查询将始终返回“0”记录,因为无法确定“NULL” value

74410

《SQL必知必会》读书笔记

如果是计算字段通常需要重命名。 部分数据库实现视图只是一个只读列表,不能通过修改视图修改底层数据。 「视图不能索引」,也不能有关联触发器或默认值。 与表一样,视图必须唯一命名。...「SELECT 语句执行次序」 函数操作 函数操作部分包含函数和计算字段部分,因为存储过程基本就是调各种函数,所以这里放到一块整理。...另外一种情况是使用case when语句中通常会有AS用法,当然更多写法是某些需要计算产生case when临时结果需要对于进行重命名方便ORM进行映射。...: --简单case函数 case sex when '1' then '男' when '2' then '女’ else '其他' end AS gender 别名还有其他用途,常见用途包括实际表列名包含不合法字符...「NOT IN 与」未知值「比较时返回 0 条记录」 由于“NULL”是未知,因此可能值列表包含“NULL”或“NULL”“NOT IN”查询将始终返回“0”记录,因为无法确定“NULL” value

80820

MySQL学习笔记-基础介绍

语法格式: //‘表名1’表示将获取到记录查到哪个表,‘表名2’表示从哪个表查询记录 //‘列名列表1’表示为哪些赋值,不设置表示所有,‘列名列表2’表示从表查询到哪些数据 insert...这是一个内置限制,可以使更新写入日志数量减至最小。 2、使用 set 关键字 可以引入列列表或各种要更新变量名。其中 set关键字 引用必须明确。...select语句查询,可以使用两种方式为指定别名。...] 联合查询时,查询结果标题为第一个select语句标题。...(2)undefined:MySQL 将自动选择所要使用算法。 (3)merge:将视图语句与视图定义合并起来,使得视图定义某一部分取代语句对应部分

22510

mysql多表查询 浅谈mysql中等值连接与非等值连接、自连接与非自连接、内连接与外连接问题(一)

不同表具有相同列名可以用 表名 加以区分。...,如果我们使用了表别名查询字段、过滤条件中就只能使用别名进行代替, 不能使用原有的表名,否则就会报错。...说明 :对多表进行查询记录、更新记录、删除记录时,如果对操作没有限定表别名(或表 名),并且操作多个表存在时,就会抛异常。...正例 :select t1.name from table_first as t1 , table_second as t2 where t1.id=t2.id; 反例 :某业务,由于多表关联查询语句没有加表别名...(或表名)限制,正常运行两年 后,最近在 某个表增加一个同名字段预发布环境做数据库变更后,线上查询语句出现出 1052 异常:Column ‘name’ in field list is ambiguous

3K20
领券