为什么第一个SQL语句不执行,第二个SQL语句不执行?
1.
select e.employee_id, e.last_name, e.salary as "SALARY"
from employees e
where employees.salary > (select avg(salary) from employees)
order by SALARY;
Run Code Online (Sandbox Code Playgroud)
2.
select e.employee_id, e.last_name, e.salary as "SALARY"
from employees e
where e.salary > (select avg(salary) from employees)
order by SALARY;
Run Code Online (Sandbox Code Playgroud)
因为您已经为表名定义了别名employee.
因此在WHERE子句中,您需要使用别名,而不是表名,因为它不再有效.
SELECT e.employee_id, e.last_name, e.salary as "SALARY"
FROM employees e
WHERE e.salary > (select avg(salary) from employees)
-- ^ ALIAS should be used, not the tableName
ORDER BY SALARY;
Run Code Online (Sandbox Code Playgroud)
这可能有点偏离主题,但这是一个额外的信息.
SQL操作顺序如下:
由于您已在FROM子句上为表名提供了别名,因此操作顺序中的以下内容现在指的是给定的别名,而不是表名本身.