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

 

  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日

相关文章

  • MySQL日志管理详解

    MySQL日志管理详解 什么是MySQL日志? MySQL日志是记录在MySQL数据库中不同事件的信息,如查询日志、慢查询日志、错误日志、二进制日志等。MySQL通过这些日志文件来记录和检测系统的行为和调试,以及对系统进行性能分析和故障排除。 MySQL日志的分类介绍 MySQL日志主要分为以下几类: 1.错误日志(Error Log) MySQL错误日志记…

    MySQL 2023年5月18日
    00
  • 一文搞懂MySQL持久化和回滚的原理

    一文搞懂MySQL持久化和回滚的原理 1. 持久化和回滚的概念 在数据库中,持久化指的是在数据被写入磁盘后仍能保持其状态的能力,即使数据库服务器意外关闭,也能够恢复之前的状态。而回滚指的是当操作失误或出错时,撤销已完成的操作,回到未完成操作前的状态。 2. MySQL持久化技术 MySQL使用了多种持久化技术来确保数据的可靠性,其中最常用的是日志和InnoD…

    MySQL 2023年5月19日
    00
  • SQL SERVER性能优化综述(很好的总结,不要错过哦)第2/3页

    SQL SERVER性能优化综述是一篇非常实用的文章,该文章从多个方面详细介绍了提高SQL SERVER性能的方法。以下是针对该文章的完整攻略: 一、SQL SERVER性能优化的基本知识 本文对于SQL SERVER性能优化的基本知识作了较为详细的说明,包括:索引、分区表、视图、存储过程、触发器等等,这些知识对于SQL SERVER性能的优化起到了非常重要…

    MySQL 2023年5月19日
    00
  • php 在线 mysql 大数据导入程序

    1 <?php 2 header(“content-type:text/html;charset=utf-8”); 3 error_reporting(E_ALL); 4 set_time_limit(0); 5 $file=’./test.sql’; 6 $data=file($file); 7 8 echo “<pre>”; 9 //p…

    MySQL 2023年4月13日
    00
  • MySQL 中 的 bit 类型,tinyint(1);

    之前一直以为 mysql中没有 bit类型,需要使用 tinyint 来标识 bit。但是前端的实体类,不好控制,后来发现这些问题已经有了默认的统一设置,这样反而更好。   总结:MySQL中 使用布尔类型的字段,就用 tinyint(1),true 为1 false 为0 辅助参考文章:https://blog.csdn.net/dianjun2454/a…

    MySQL 2023年4月13日
    00
  • MySQL优化方案之开启慢查询日志

    MySQL是一个流行的开源关系型数据库管理系统,它在互联网应用中得到广泛的应用。优化MySQL可以提高系统的性能和稳定性,其中开启慢查询日志是MySQL优化的一种方案。 一、慢查询日志概述 慢查询日志是MySQL提供的一个查询日志记录工具,它会记录下执行时间超过一定时间阈值的查询语句,以便开发人员找到查询效率低下的语句进行调优。一般情况下,我们设定执行时间超…

    MySQL 2023年5月19日
    00
  • Mysql启动报ERROR:2002的分析与解决

    当我们尝试启动MySQL服务时,有时会遇到以下错误: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2 "No such file or directory") 这种错误可能会导致我…

    MySQL 2023年5月18日
    00
  • MySQL8.0.21安装步骤及出现问题解决方案

    MySQL8.0.21安装步骤及出现问题解决方案 MySQL是一种开源的关系型数据库管理系统,常用于构建Web应用程序。本篇文章介绍了MySQL8.0.21的安装步骤及出现问题的解决方案,希望对大家有所帮助。 1. 下载MySQL 首先,需要从MySQL官网(https://www.mysql.com/)下载MySQL8.0.21的安装包。在下载页面上,选择…

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