1

我有以下结构的 2 个表:

People

Id | LastName | FirstName | Other columns...

第二个表有一个 XML 列:

Id | MyXmlCol | Other columns...

MyXmlCol存储以下 XML:

<myData>
  <block>
    <person id="1" />
    ...other nodes
  </block>
  ...other blocks
</myData>

id 属性实际上指向 People 表的 Id 列。

我需要的是查询MyXmlCol,以便它返回:

<myData>
  <block>
    <person id="1" LastName="Jones" FirstName="Bob" />
    ...other nodes
  </block>
  ...other blocks
</myData>

有可能做出这样的预测吗?我正在使用 Sql Server 2012。

4

1 回答 1

1

如果单个元素“块”中只能有一个元素“人”,这应该适合:

update T
set MyXmlCol.modify('
    insert (
        attribute LastName {sql:column("P.LastName")},
        attribute FirstName {sql:column("P.FirstName")}
    )
    into (/myData/block/person)[1]')
from @Table2 T
inner join @People P on T.MyXmlCol.value('(/myData/block/person/@id)[1]', 'int') = P.Id
于 2013-08-07T10:44:34.373 回答