Sql server T-SQL Order By-数据类型优先级未按预期工作

Sql server T-SQL Order By-数据类型优先级未按预期工作,sql-server,tsql,sql-order-by,sqldatatypes,operator-precedence,Sql Server,Tsql,Sql Order By,Sqldatatypes,Operator Precedence,我已经对这个问题困惑了好几天了,并且刚刚确定了我的苦恼的根源——一个按条款排序的命令并没有像预期的那样起作用 脚本如下所示: select * from my_table order by change_effective_date, unique_id desc 更改\生效\日期是一个日期时间字段,唯一\ id是一个整型字段 我本以为这会首先给我最新的一行(即变更生效日期值最高的一行)。但是,它首先给出了最早的行,并且唯一的_id也是按升序排列的(这些id通常是连续的,因此我通常希望它们遵循

我已经对这个问题困惑了好几天了,并且刚刚确定了我的苦恼的根源——一个按条款排序的命令并没有像预期的那样起作用

脚本如下所示:

select * from my_table
order by change_effective_date, unique_id desc
更改\生效\日期是一个日期时间字段,唯一\ id是一个整型字段

我本以为这会首先给我最新的一行(即变更生效日期值最高的一行)。但是,它首先给出了最早的行,并且唯一的_id也是按升序排列的(这些id通常是连续的,因此我通常希望它们遵循与日期相同的顺序,尽管这并不完全可靠)

困惑不解的是,我转向谷歌,发现数据类型优先级会影响order by子句,排名较低的数据类型会转换为排名较高的数据类型:

但是,datetime优先于int,因此不应以这种方式影响它

更奇怪的是,如果我从ORDERBY子句中取出unique_id,它将数据按日期降序进行完美排序。不过,我确实希望在ORDERBY子句中添加一个唯一标识符,因为脚本中可能有多行具有相同的日期,而且我希望标识最近的行(在本例中,唯一的_id将是平局断路器,因为我假设它是连续的)

如果有人能解释这里发生了什么,我将非常感激


谢谢。

谢谢!!工作很愉快。真不敢相信我不知道这一点(我想知道在我过去写的脚本中还有什么“按顺序”的灾难在潜伏着……)。有人知道这是否也适用于Oracle吗afaik@s.turn对甲骨文也一样,谢谢!!工作很愉快。真不敢相信我不知道这一点(我想知道在我过去写的脚本中还有什么“按顺序”的灾难在潜伏着……)。有人知道这是否也适用于Oracle吗afaik@s.turn对甲骨文也是如此。
select * from my_table
order by change_effective_date desc, unique_id desc