Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中使用选择时使用更新_Sql_Sql Server 2008 - Fatal编程技术网

在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

我的SQL编程是有限的,这就是为什么我有这个可能是基本代码的问题。我试图在检索记录时更新它,我知道如果我将其分为两个过程,我可以更新它,但为了一致性起见,我想更新它正在检索的记录。无论如何,下面是代码,希望它能显示我正在努力实现的目标:

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”。