如何使用ms sql进行更新和排序 [英] How to update and order by using ms sql

查看:16
本文介绍了如何使用ms sql进行更新和排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

理想情况下我想这样做:

Ideally I want to do this:

UPDATE TOP (10) messages SET status=10 WHERE status=0 ORDER BY priority DESC;

英语:我想从数据库中获取前 10 条可用的 (status=0) 消息并锁定它们 (status=10).优先接收优先级高的消息.

In English: I want to get the top 10 available (status=0) messages from the DB and lock them (status=10). A message with a higher priority should be gotten first.

不幸的是,MS SQL 不允许在更新中使用 order by 子句.

unfortunately MS SQL doesn't allow an order by clause in the update.

无论如何如何规避?

推荐答案

您可以执行子查询,首先获取按优先级排序的前 10 个 ID,然后更新该子查询中的 ID:

You can do a subquery where you first get the IDs of the top 10 ordered by priority and then update the ones that are on that sub query:

UPDATE  messages 
SET status=10 
WHERE ID in (SELECT TOP (10) Id 
             FROM Table 
             WHERE status=0 
             ORDER BY priority DESC);

这篇关于如何使用ms sql进行更新和排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆