cobraLP又是摸鱼的一天!!

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

Toretto·2023-04-15 12:56·173 次阅读

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

 

posted @   cobraLP  阅读(173)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示