[英]ORACLE select query with order by case ASC and DESC
[英]Oracle order by query using select case
相比
...
order by 2
和
...
order by 1+1
在“编译”时,前2
是 integer 常量,因此它是列的 position,db 引擎按指定列排序。 第二个1+1
是 integer 表达式,db 引擎按此值“2”排序。 同样, (select (case when 1=1 then 1 else 2 end) from dual)
是一个表达式,而不是列规范。
当您在ORDER BY
子句中指定一个数字时,Oracle 将按生成的 select 的该列排序。 例如, ORDER BY 1,2
将按第一列排序,然后是第二列。 如果没有第二列,则会出现错误。
在最外层查询的ORDER BY
中,您的查询中基本上没有发生排序,因为1
始终从您的子查询返回。 这是按值1
而不是第一列排序。
如果您解释了您希望实现的逻辑,那么我们也许可以提供帮助,但这就是您现有查询的情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.