ORA-00904 对于 Oracle 中的 ORDER BY

ORA-00904 for ORDER BY in Oracle

我不明白这个查询出了什么问题:

    select last_name, first_name a from employees
order by "a";

输出为:

ORA-00904: "a": invalid identifier

但是此查询有效并按 first_name 升序排序结果:

    select last_name, first_name a from employees
order by "A";

Oracle 默认不区分大小写。

所以,当你说

select first_name a from employees

Oracle 将其视为

SELECT FIRST_NAME A FROM EMPLOYEES

但是当你开始使用 "Quotes"...

order by "a"

Oracle 将其视为

ORDER BY "a"

一个<>一个

如果您确保引用的对象也始终大写,这不是问题,这就是为什么您的 "A" 有效但 "a" 无效的原因。

我的建议 - 完全删除对象名称上的引号。

SELECT LAST_NAME,
       FIRST_NAME A
  FROM EMPLOYEES
 ORDER BY A;