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

打印 上一主题 下一主题

主题 864|帖子 864|积分 2594

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

 我们先对salary * 12 命名一个别名annual_sal
  1. SELECT employee_id,salary,salary * 12 annual_sal
  2. FROM employees
  3. ORDER BY annual_sal;
复制代码
 这段代码以annual_sal升序输出且正常执行没有报错。说明order by 可以使用别名
 我们再看看这个段代码
  1. SELECT employee_id,salary,salary * 12 annual_sal
  2. FROM employees
  3. WHERE annual_sal > 81600
  4. ORDER BY annual_sal;
复制代码
这段代码就报错了,报错说明是Unknown column 'annual_sal' in 'where clause'。由此可以得出where语句执行是找不到annual_sal.
要解决这个问题,我们必须知道sql语句执行顺序。

  • 先执行from语句用哪个表
  • where过滤条件(这时候不知道别名)
  • select选择输出字段 (这时候才有别名)
  • order by进行排序   (order by 才能使用别名)
总结一下:因为where在sql中执行顺序在select(创建别名)之前,所以找不到别名。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用多少眼泪才能让你相信

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表