在SQL中使用选择时使用更新
我的SQL编程是有限的,这就是为什么我有这个可能是基本代码的问题。我试图在检索记录时更新它,我知道如果我将其分为两个过程,我可以更新它,但为了一致性起见,我想更新它正在检索的记录。无论如何,下面是代码,希望它能显示我正在努力实现的目标:在SQL中使用选择时使用更新,sql,sql-server-2008,Sql,Sql Server 2008,我的SQL编程是有限的,这就是为什么我有这个可能是基本代码的问题。我试图在检索记录时更新它,我知道如果我将其分为两个过程,我可以更新它,但为了一致性起见,我想更新它正在检索的记录。无论如何,下面是代码,希望它能显示我正在努力实现的目标: Update dbo.ASNs Set Sent = 'Yes' Where ASNNumber In ( Select * From dbo.ASNs Where Sent = 'No' for xml auto, EL
Update dbo.ASNs
Set Sent = 'Yes'
Where ASNNumber In
(
Select * From dbo.ASNs
Where Sent = 'No'
for xml auto, ELEMENTS, ROOT('ASNs')
)
试着用一个.我想你的意思是:
UPDATE dbo.ASNs
SET Sent = 'Yes'
OUTPUT inserted.*
WHERE Sent = 'No'
FOR XML auto, ELEMENTS, ROOT('ASNs')
参见IN子句是错误的,您不能将列与*进行比较
...Where ASNNumber In (Select * From dbo.ASNs...
这应该是这样的:
...Where ASNNumber In (Select ASNNumber From dbo.ASNs ...
没有任何其他优化:
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') )
+1在问题中使用“while”。