更新同一个表时出现问题

时间:2016-08-22 20:53:13

标签: sql sql-server sql-server-2008-r2

我正在尝试从我从另一个表中获取的CSV值更新表。此CSV值是我在#Form表中基于变量创建的子查询的输出。现在我想再次更新#Form表,我不想使用游标。 我无法正确更新#Form表。

以下是我正在使用的代码。

Update f
SET AuditorComment = (
    Select @Comment = @Comment+', '+a.Value
    FROM #Form fd
    LEFT JOIN AuditData a on (fd.FormID=a.objectID and a.ObjectTypeID=12 )
    WHERE  FORM_OID=@frmOID AND SubjectID=@subjectId AND f.FormID = fd.FormID 
    )
From #Form f

请帮助我,我做错了。

1 个答案:

答案 0 :(得分:2)

这不会像那样工作。您需要使用for xml path或类似的方法:

update f
    set AuditorComment = stuff((select ', ' + ad.value
                                from formdata fd join
                                     AuditData ad 
                                     on fd.FormID = ad.objectID and ad.ObjectTypeID = 12
                                where FORM_OID = @frmOID and
                                      SubjectID = @subjectId and
                                      f.FormID = fd.FormID 
                                for xml path ('')
                               ), 1, 2, '')
    From #Form f;