6
是否可以通过声明为订单中的所有列提供一次方向?您可以为一个订单中的所有列指定一个方向吗?
即
select *
from my_table
order by name desc, type desc
可以使用 “降序” 一旦你写同样的事情?
也许类似这样? (这不起作用)
select *
from my_table
order by (name, type) desc
是否可以通过声明为订单中的所有列提供一次方向?您可以为一个订单中的所有列指定一个方向吗?
即
select *
from my_table
order by name desc, type desc
可以使用 “降序” 一旦你写同样的事情?
也许类似这样? (这不起作用)
select *
from my_table
order by (name, type) desc
不是.SQL标准不允许这样做。
话虽如此,可能有一些RDBMS确实支持这样的语法。我只是不知道任何。
你可以使用row_number
为:
select *
from my_table
order by
row_number() over (order by name, type) DESC
最后DESC将反转ROW_NUMBER的顺序。因此,它会将ASC翻转为DESC以获得名称和类型。
这很聪明。 – 2011-06-13 18:34:45
虽然是等价的,但我不相信查询优化器识别棘手问题,只做一种排序,而不是一次排序生成row_number(),然后再次排序输出到另一个方向。我快速浏览了order by row_number()的解释计划(由A,B排序)DESC'verus'order by desc,B desc'确实有一个额外的步骤,即“窗口排序”。 (在Linux上的EE 10.2.0.4.0 64位) – 2011-06-13 19:17:04
我认为键入ORDER BY名称DESC更简单,键入DESC ;-) – DCookie 2011-06-13 19:27:42