【发布时间】:2011-11-27 16:33:29
【问题描述】:
我有两个带有 XML 字段的(某种程度上相关的)表。问题是我必须用第二个 XML 的数据更新第一个的 XML。超过100条记录。如何用 TSQL 做到这一点?
我创造了这样的东西。
UPDATE [pwi_new].[dbo].[art]
SET rest.modify('
replace value of (/root/e[k="alien_id"]/v[1]/text())[1]
with sql:column("new.rest.value(
''(/root/e[k="alien_id"/v)[1]'',''varchar(max)'')
")
')
FROM art_new AS new WHERE
(
art.title = new.title
OR art.id = 1352 AND new.id = 119
OR art.id = 1353 AND new.id = 120
OR art.id = 1379 AND new.id = 146
OR art.id = 1380 AND new.id = 147
)
AND art.parent = 1460
但是,它不起作用。我遇到了这个错误
XQuery [pwi_new.dbo.art.rest.modify()]: ',' or ')' 预期
在这一行:
''(/root/e[k="alien_id"/v)[1]'',''varchar(max)'')
如果可能的话,不知道如何解决。
看起来没有子查询、cte、视图等是不可能的。
TSQL: How can I update the value of an xml tag with the value of an xml tag from another related table?
我知道这个问题。我有超过 100 条记录,所以我想要一个不需要 sql:variable 的选项
【问题讨论】:
-
这两个表有什么关系?另一篇文章看起来非常接近您所描述的内容。
-
表格是一对一相关的。但是没有简单的键。不同之处在于我有超过 100 条记录要更新,而不是一条。
-
“它不起作用”。它会抛出错误吗?会发生什么?
标签: sql sql-server xml sql-server-2008 xquery