T -SQL顺序按 - 数据类型优先级无法正常工作



我已经对这个问题感到困惑了几天,并且刚刚确定了我的困境的来源 - 按子句的订单无法正常工作。

脚本是这样的:

select * from my_table
order by change_effective_date, unique_id desc

change_effective_date是一个dateTime字段,unique_id是一个int字段。

我曾期望这会给我最新的行(即,在change_effective_date中具有最高值的行)。但是,它首先给出了最古老的行,而唯一的_id也按升序顺序(这些ID是顺序的,所以我通常希望它们遵循与日期相同的顺序,尽管这不是完全可靠的)。<<<<<<<<<<<<<<

困惑,我转向Google,发现数据类型的优先级可以影响从句的顺序,而较低的数据类型将转换为较高级别的数据类型:https://blog.sqlauthority.com/2010/2010/10/10/088/sql-server-simple-explanation-type-precedence/

但是,DateTime优先于INT,因此不应以这种方式影响它。

更奇怪的是,如果我通过子句从订单中删除唯一的_id,它将数据以降序日期顺序完美地对数据进行分类。但是,我确实想在子句中添加唯一标识符,因为可能有多个行的日期,而在脚本中,我想确定最新的脚本(在这种情况下,唯一的_id将是TIE是TIE - 我认为它是顺序的)。

如果有人可以解释这里发生的事情,我真的很感激!

谢谢。

select * from my_table
order by change_effective_date desc, unique_id desc

最新更新