理想情况下我想这样做:
UPDATE TOP (10) messages SET status=10 WHERE status=0 ORDER BY priority DESC;
Run Code Online (Sandbox Code Playgroud)
英文:我想从数据库中获取前10个可用(状态= 0)消息并锁定它们(状态= 10).应首先获得具有更高优先级的消息.
遗憾的是,MS SQL不允许更新中的order by子句.
无论如何如何规避这个?
以下查询正在运行:
update top(1) ShipBillInfo
set shipfirstname='kkk'
where CustomerId='134';
Run Code Online (Sandbox Code Playgroud)
但如果我尝试按某些Id订购,则显示错误:例如:
update top(1) ShipBillInfo
set shipfirstname='kkk'
where CustomerId='134'
order by
OredrGUID desc;
Run Code Online (Sandbox Code Playgroud) 我有以下查询:
UPDATE TOP (@MaxRecords) Messages
SET status = 'P'
OUTPUT inserted.*
FROM Messages
where Status = 'N'
and InsertDate >= GETDATE()
Run Code Online (Sandbox Code Playgroud)
在Messages表中有优先级列,我想首先选择高优先级消息.所以我需要一个ORDER BY.但是我不需要在更新运行之前对输出进行排序,而是对数据进行排序.
据我所知,不可能将ORDER BY添加到UPDATE语句中.还有其他想法吗?
米