如果列号为

时间:2018-12-13 16:42:22

标签: sql sql-server

我可以选择以下order by

ORDER BY 4 DESC, case when (5 is null ) then 1 else 2 end, 5 desc,10

但是,显然,第五列用作文字5,与其他表达式不同:

A constant expression was encountered in the ORDER BY list, position 2.

我在这里应该做什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

使用实际的列名!这样,将来对所选列所做的任何更改都不会破坏您的订单。

如果您不相信我:https://sqlblog.org/2009/10/06/bad-habits-to-kick-order-by-ordinal

答案 1 :(得分:0)

这是个坏主意。不管使用多久,都使用列名。否则将是维护的噩梦。您应避免使用动态sql。