为什么第一个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;
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;
答案 0 :(得分:5)
因为您已经为表名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;
这可能是一个 off-topic ,但这是一个额外的信息。
SQL操作顺序如下:
由于您在FROM
子句上为表名提供了别名,因此操作顺序中的以下任何内容现在都是指的是给定的别名而不是表名本身。
答案 1 :(得分:0)
要使第一个出现工作,请将所有出现的“e”替换为员工并删除“e”别名:
select employees.employee_id, employees.last_name, employees.salary as "SALARY"
from employees
where employees.salary > (select avg(salary) from employees)
order by SALARY;