理想情况下我想这样做:
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/