在SQL中使用Select时使用Update

时间:2011-05-11 13:45:34

标签: sql sql-server-2008

我的SQL编程是有限的,这就是为什么我可能有这个基本代码的问题。我正在尝试更新记录,因为我正在检索它,我知道我可以更新它,如果我将它分成两个程序,但我想更新记录,它为了保持原因而正在检索。无论如何,下面是代码,希望它将显示我想要完成的任务:

Update dbo.ASNs
    Set Sent = 'Yes'
    Where ASNNumber In
(
    Select * From dbo.ASNs
    Where Sent = 'No'
    for xml auto, ELEMENTS, ROOT('ASNs')
)

4 个答案:

答案 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)

尝试将UPDATEOUTPUT 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') )