sql server按日期和优先级排序

时间:2020-03-11 13:42:35

标签: sql sql-server sorting sql-order-by

您好,我的表格中有此数据

ID|priority|lastModifiedDate
1 |   3    |2020-03-10 14:27:25.107
2 |   2    |2020-03-10 14:26:30.247
3 |   3    |2020-03-11 07:37:27.437
4 |   2    |2020-03-11 09:07:28.863

我正在尝试先按lastModifiedDate desc然后按优先级排序此数据,以获得类似这样的列表

    ID|priority|lastModifiedDate
    3 |   3    |2020-03-11 07:37:27.437
    4 |   2    |2020-03-11 09:07:28.863
    1 |   3    |2020-03-10 14:27:25.107
    2 |   2    |2020-03-10 14:26:30.247

我正在使用条款

SELECT 
  [Id]
  ,[Priority] 
  ,[LastModifiedDate]

  FROM [News] order by LastModifiedDate desc, Priority desc

但是我明白了

    ID|priority|lastModifiedDate
    4 |   2    |2020-03-11 09:07:28.863
    3 |   3    |2020-03-11 07:37:27.437
    1 |   3    |2020-03-10 14:27:25.107
    2 |   2    |2020-03-10 14:26:30.247

如果我尝试先对“ priority”列进行排序,然后对lastmodifieddate进行排序,那么它也不起作用,我认为这是因为第二次排序时是基于第一个排序数据的结果,

所以我的问题是,¿有什么方法可以得到那个结果?

1 个答案:

答案 0 :(得分:3)

您需要将LastModifiedDate的订单作为日期投放,以从订单中删除时间元素。

已更新,可以处理您在同一天有多个优先级相同的记录,并且希望按时间排序的记录的情况。

SELECT 
  [Id]
  ,[Priority] 
  ,[LastModifiedDate]

  FROM [News] order by CAST(LastModifiedDate AS DATE) desc, Priority desc, LastModifiedDate