oracle - UNION 中的 Oracle ORDER BY
问题描述
我有这个查询:
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": invalid identifier' 我知道我可以通过 Alias "Info" 订购,但我如何只能通过 p.nume 订购?
解决方案
我如何通过 p.nume 订购?
对于 UNION 查询,我们只能在第一个子查询的投影中按命名列排序。您的查询仅nume
作为连接列的一部分,因此出现 ORA-00904 错误。
按结果集中的列对 UNION 查询进行排序意味着您可以按列别名排序...
order by "Info"
...这意味着它将有效地按prenume, nume, LOWER(REVERSE(c.titlu_curs))
.
另一种解决方案 - 当您不给排序列起别名时很有用 - 是使用位置符号
order by 1
推荐阅读
- scheme - 在 Racket 中使用本地而不是辅助函数
- spring - Spring Security RolesAllowed 和 thymeleaf sec:authorize
- python - Django ValueError:需要 3 个值才能在 for 循环中解压;得到 2. 如何解压模板中的压缩数据?
- r - 使用 R 中的 full_join 按顺序连接数据帧列表
- c++ - 如何按 C++ 中特定列的值对二维字符串数组进行排序?
- javascript - jquery插件“数据表”中基于Ajax的范围搜索
- javascript - 如何在 React 中更改输入值时保留初始状态?
- c - C使用sscanf将字符串拆分成块?
- python - 由节点js运行时在python脚本中提交数据
- javascript - URL 正则表达式没有捕获所有需要的情况