我的SQL编程是有限的,这就是为什么我可能有这个基本代码的问题。我正在尝试更新记录,因为我正在检索它,我知道我可以更新它,如果我将它分成两个程序,但我想更新记录,它为了保持原因而正在检索。无论如何,下面是代码,希望它将显示我想要完成的任务:
Update dbo.ASNs
Set Sent = 'Yes'
Where ASNNumber In
(
Select * From dbo.ASNs
Where Sent = 'No'
for xml auto, ELEMENTS, ROOT('ASNs')
)
答案 0 :(得分:2)
我认为你的意思是:
UPDATE dbo.ASNs
SET Sent = 'Yes'
OUTPUT inserted.*
WHERE Sent = 'No'
FOR XML auto, ELEMENTS, ROOT('ASNs')
请参阅here
答案 1 :(得分:1)
IN子句错误,您无法将列与*。
进行比较...Where ASNNumber In (Select * From dbo.ASNs...
这应该是这样的:
...Where ASNNumber In (Select ASNNumber From dbo.ASNs ...
答案 2 :(得分:0)
尝试将UPDATE
与OUTPUT INTO
一起使用。
答案 3 :(得分:0)
没有任何其他优化:
UPDATE dbo.ASNs
SET Sent = 'Yes'
FROM dbo.ASNs
WHERE ASNNumber IN ( SELECT ASNNumber
FROM dbo.ASNs
WHERE Sent = 'No'
FOR XML AUTO ,
ELEMENTS ,
ROOT('ASNs') )