Mysql 中,为什么 WHERE 使用别名会报错,而 ORDER BY 不会报错?

yizhihongxing
 

  Mysql 中,为什么 WHERE 使用别名会报错,而 ORDER BY 不会报错?

 我们先对salary * 12 命名一个别名annual_sal

SELECT employee_id,salary,salary * 12 annual_sal
FROM employees
ORDER BY annual_sal;

 这段代码以annual_sal升序输出且正常执行没有报错。说明order by 可以使用别名

 我们再看看这个段代码

SELECT employee_id,salary,salary * 12 annual_sal
FROM employees
WHERE annual_sal > 81600
ORDER BY annual_sal;

这段代码就报错了,报错说明是Unknown column 'annual_sal' in 'where clause'。由此可以得出where语句执行是找不到annual_sal.

要解决这个问题,我们必须知道sql语句执行顺序。

  1. 先执行from语句用哪个表
  2. where过滤条件(这时候不知道别名)
  3. select选择输出字段 (这时候才有别名)
  4. order by进行排序   (order by 才能使用别名)

总结一下:因为where在sql中执行顺序在select(创建别名)之前,所以找不到别名。

 

原文链接:https://www.cnblogs.com/cobral/p/17320854.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql 中,为什么 WHERE 使用别名会报错,而 ORDER BY 不会报错? - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • my.cnf参数配置实现InnoDB引擎性能优化

    InnoDB引擎是MySQL数据库中默认的事务性存储引擎,它的性能优化对于MySQL数据库的整体性能提升至关重要。本文将介绍如何通过my.cnf参数配置实现InnoDB引擎性能优化。 步骤一:备份原有my.cnf文件 在修改my.cnf文件前,我们应该先备份原有的my.cnf文件,以便在修改出现问题时可以恢复到原有配置。 cp /etc/mysql/my.c…

    MySQL 2023年5月19日
    00
  • 从linux系统mysql导出数据库

    原文:http://blog.csdn.net/lifuxiangcaohui/article/details/50763674   1、MySQL数据库导出 /usr/local/mysql/bin/mysqldump -u root -p123456 test> /home/backup/test.sql 其中:root为数据库用户名 123456…

    MySQL 2023年4月13日
    00
  • MySQL thread_stack连接线程的优化

    MySQL 的 thread_stack 参数用于配置连接线程的最大栈空间大小,是一个影响 MySQL 运行性能的重要参数。在高并发、大数据量场景下,可通过调整该参数来优化 MySQL 的连接线程,提升系统的性能和稳定性。 下面是一个完整的 MySQL thread_stack 连接线程优化攻略,包括调整步骤和示例说明。 步骤一:查看默认 thread_st…

    MySQL 2023年5月19日
    00
  • MySQL存储引擎有哪些?

    MySQL存储引擎是用于处理和管理MySQL数据库中数据存储和检索的关键组件。MySQL支持多个存储引擎,不同的引擎有不同的特点和适用场景。以下是MySQL支持的主要存储引擎: InnoDB引擎 InnoDB是当前MySQL默认的事务性存储引擎。它支持事务和外键约束等高级特性,能够提供ACID事务支持和高可靠性,适合处理事务性复杂的业务应用。InnoDB还支…

    MySQL 2023年3月9日
    00
  • 【必知必会的MySQL知识】②使用MySQL

    目录 前言 启动MySQL服务 连接MySQL MySQL数据库基本命令 小结 前言 根据上一篇文章【必知必会的MySQL知识】①初探MySQL的内容,想必您对MySQL数据库有了一个整体的了解了,并且应该在自己电脑上已经安装上了MySQL。这一篇呢我们来说一说这么连接上数据库并且使用它。 启动MySQL服务 前面MySQL安装的文章手把手教你安装MySQL…

    MySQL 2023年5月2日
    00
  • Mysql性能优化案例 – 覆盖索引分享

    下面我来详细讲解“Mysql性能优化案例 – 覆盖索引分享”的完整攻略。 什么是覆盖索引 在 MySQL 中,如果使用了索引的列恰好是查询列,那么就称该索引覆盖了查询,叫做覆盖索引。 具体地说,覆盖索引指对于一条 SQL 语句,查询列的所有数据都可以从索引中获取,而不必访问表中的数据行。这种情况下,查询效率可以达到最大化。 为什么需要覆盖索引 因为 MySQ…

    MySQL 2023年5月19日
    00
  • 《1—关于解决MySQL在控制台插入中文乱码问题》

    说明:以下所有操作都是基于我个人的电脑及示例,读者可以参考我这个解决过程,去解决自己的问题,如有其它疑问,欢迎留言交流。 首先来看看我遇到的问题: 【1】查看数据库: 【2】使用test数据库: 【3】查看test数据库中有哪些表: 【4】查看student_table2表中的字段内容: 【5】向student_table2表中插入一条记录: 可以看到插入失…

    MySQL 2023年4月13日
    00
  • mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法

    当我们使用MySQL执行SQL文件时,可能会遇到“Error: Unknown storage engine ‘InnoDB’”的报错,这是因为MySQL没有正确地识别InnoDB存储引擎导致的。下面是解决这个问题的步骤和方法。 步骤 查看当前MySQL版本是否支持InnoDB存储引擎。可以通过以下命令查看: SHOW ENGINES; 查看结果中是否包含I…

    MySQL 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部