UNION中的ORDER BY不起作用

时间:2017-06-13 07:52:35

标签: sql oracle sql-order-by

在ORACLE DB中我不明白为什么ORDER BY有时可以工作,有时却不工作。 据我所知 - 列始终来自复合运算符中的第一个子查询。在下面的情况中,我们排序的最后一列amd

SELECT 'Ala' col1, 123123 sal, 0.33 amd FROM DUAL
UNION 
SELECT 'Ola' kol1, 12444 usd, 0.22 FROM DUAL
ORDER BY amd;

但是添加额外的联合会破坏一切:

SELECT 'Ala' col1, 123123 sal, 0.33 amd FROM DUAL
UNION 
SELECT 'Ola' kol1, 12444 usd, 0.22 FROM DUAL
UNION
SELECT 'Ula' coll1, 12444 eur, NULL FROM DUAL
ORDER BY amd;

ORDER BY amd
         *
ERROR at line 6:
ORA-00904: "AMD": invalid identifier

即使 amd 仍然是最后一列(没有ORDER BY的SELECT):

SELECT 'Ala' col1, 123123 sal, 0.33 amd FROM DUAL
UNION
SELECT 'Ola' kol1, 12444 usd, 0.22 FROM DUAL
UNION
SELECT 'Ula' coll1, 12444 eur, NULL FROM DUAL;

COL        SAL        AMD
--- ---------- ----------
Ala     123123        .33
Ola      12444        .22
Ula      12444

为什么会这样?
我知道我应该为所有列或数字位置使用别名,但我正在准备考试,并希望了解不一致性。 请注意,括号不能解决问题。

0 个答案:

没有答案