ORDER BY的SQL UPDATE TOP?

前端之家收集整理的这篇文章主要介绍了ORDER BY的SQL UPDATE TOP?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个以下查询
UPDATE TOP (@MaxRecords) Messages 
SET    status = 'P' 
OUTPUT inserted.* 
FROM   Messages 
where Status = 'N'
and InsertDate >= GETDATE()

在消息表中有优先级列,我想首先查询高优先级消息.所以我需要一个订单.但是,在更新运行之前,我不需要排序输出,而是排序数据.

据我所知,不可能将ORDER BY添加到UPDATE语句.任何其他想法?

解决方法

您可以使用常用表表达式:
;with cte as (
   select top (@MaxRecords)
       status
   from Messages 
   where Status = 'N' and InsertDate >= getdate()
   order by ...
)
update cte set
    status = 'P'
output inserted.*

这一个使用的事实是,在sql Server中,可以更新cte,如可更新视图.

猜你在找的MsSQL相关文章