ORDER BY的SQL UPDATE TOP?

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

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

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

解决方法

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

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

猜你在找的MsSQL相关文章