我有这个查询:
SELECT p.prenume||' '||p.nume ||' '||LOWER(REVERSE(c.titlu_curs)) AS "Info"
from profesori p JOIN didactic d ON d.id_prof = p.id_prof
JOIN cursuri c ON d.id_curs = c.id_curs
UNION
SELECT p.prenume||' '||p.nume||' ' AS "Info" from profesori p
JOIN didactic d ON p.id_prof NOT IN
(SELECT id_prof from didactic)
JOIN cursuri c ON c.id_curs NOT IN (SELECT id_curs from didactic) ORDER BY p.nume
如何按p.nume订购?我收到此错误“ P”。“ NUME”:无效标识符” 我知道我可以通过Alias“ Info”订购,但是我怎么只能通过p.nume订购?
答案 0 :(得分:1)
如何按p.nume订购?
对于UNION查询,我们只能在第一个子查询的投影中按命名列进行排序。您的查询只有nume
作为串联列的一部分,因此出现ORA-00904错误。
按结果集中的列对UNION查询进行排序意味着您可以按列别名进行排序...
order by "Info"
...这意味着它将有效地按prenume, nume, LOWER(REVERSE(c.titlu_curs))
进行排序。
另一种解决方案-使用位置表示法
-当您不给排序列加上别名时很有用-order by 1