为什么这些SQL语句中只有一条有效?

为什么这些SQL语句中只有一条有效?,sql,oracle,select,Sql,Oracle,Select,为什么第一条SQL语句不执行,而第二条SQL语句执行 一, 二, 因为您已经为表名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

为什么第一条SQL语句不执行,而第二条SQL语句执行

一,

二,

因为您已经为表名
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;
这可能有点离题,但这是一个额外的信息

SQL操作的顺序如下:

  • FROM子句
  • WHERE子句
  • 分组依据子句
  • 有从句
  • SELECT子句
  • 按条款订货
由于您已在
FROM
子句中为表名提供了别名,因此按照操作顺序,下面的任何内容现在都是指给定的别名,而不是表名本身。

因为您已经为表名
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;
这可能有点离题,但这是一个额外的信息

SQL操作的顺序如下:

  • FROM子句
  • WHERE子句
  • 分组依据子句
  • 有从句
  • SELECT子句
  • 按条款订货

由于您在
FROM
子句中为表名提供了一个别名,因此以下操作顺序中的任何内容现在都是指给定的别名,而不是表名本身。

要使第一个别名起作用,请用employees替换所有出现的“e”,并删除“e”别名:


要使第一个有效,请将所有出现的“e”替换为employees,并删除“e”别名:


你会喜欢吗?(添加帖子链接)@hims056我喜欢你编辑的查询,但我无法得到任何结果。通过测试这些值:
1370508
491243
我可以在上得到结果,但不能在这个上得到结果,但我不确定为什么只更改列名不会导致返回结果。哦,实际上问题是:我编辑了Meta的查询。查看以下内容的结果:)@hims056 my bad
:)
嘿,您是如何或从何处知道可以转换为链接的别名的,例如
ID as[Post Link]
或此
ID[User Link]
?上的别名,它们被称为神奇列。有没有你喜欢的?(添加帖子链接)@hims056我喜欢你编辑的查询,但我无法得到任何结果。通过测试这些值:
1370508
491243
我可以在上得到结果,但不能在这个上得到结果,但我不确定为什么只更改列名不会导致返回结果。哦,实际上问题是:我编辑了Meta的查询。查看以下内容的结果:)@hims056 my bad
:)
嘿,您是如何或从何处知道可以转换为链接的别名的,例如
ID as[Post Link]
或此
ID[User Link]
?上的别名,它们被称为神奇列。在它的
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;
select employees.employee_id, employees.last_name, employees.salary as "SALARY"
from employees 
where employees.salary > (select avg(salary) from employees) 
order by SALARY;