疯狂编程网

  • 首页
  • 后端
    • GOLANG
    • PHP
  • 前端
  • 客户端
  • 服务器
  • AIGC
  • 开发工具
  • 代码人生
  • 关于本站
    • 联系我们
    • 免责声明
  1. 首页
  2. 服务器
  3. MYSQL
  4. 正文

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

2023年5月10日 279点热度 0人点赞 0条评论
 

  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(创建别名)之前,所以找不到别名。

 

本文来自博客园,作者:cobraLP,转载请注明原文链接:https://www.cnblogs.com/cobral/p/17320854.html

标签: mysql
最后更新:2023年5月10日

大明

靠写代码养家的开发者。

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2023 疯狂编程网. ALL RIGHTS RESERVED.

京ICP备2022013580号-1