标题: Mysql 中,为什么 WHERE 使用别名会报错,而 ORDER BY 不会报错? [打印本页] 作者: 用多少眼泪才能让你相信 时间: 2023-4-15 18:05 标题: 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语句执行顺序。