sql - 如何使用 ms sql 进行更新和排序

标签 sql sql-server tsql sql-order-by sql-update

理想情况下我想这样做:

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

英文:我想从数据库获取前 10 条可用(状态 = 0)消息并锁定它们(状态 = 10)。应首先获取优先级较高的消息。

遗憾的是,MS SQL 不允许在更新中使用 order by 子句。

无论如何,如何规避这个问题?

最佳答案

WITH    q AS
        (
        SELECT  TOP 10 *
        FROM    messages
        WHERE   status = 0
        ORDER BY
                priority DESC
        )
UPDATE  q
SET     status = 10

关于sql - 如何使用 ms sql 进行更新和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/655010/

相关文章:

mysql - 无法通过一个查询更新多个记录(CASE/WHEN))

mysql - SQL 选择查询连接

asp.net - 在 SELECT 子句中显示不同 COUNT 的存储过程

java - SQL Server "Application=Intent"不工作 JDBC

.net - 如何设计公共(public)交通时刻表数据库?

sql-server - 查找 SQL Server 表子集中前一个值和后一个值之间的值

sql - 冗余索引

sql - T-SQL 如何获取 2 周支付期的日期范围

sql - TSQL 如果不存在则插入

xml - 如何在SQL中输出带有属性和字段值的xml