我有两张桌子。一张表包含键列和 xml 列。其他表保存数据。当我尝试从第二个表形成 xml 并更新第一个表时。它只更新一个节点,它忽略了第二个节点。请参考这个例子。
declare @mytable table
(
col1 int,
col2 varchar(100)
)
declare @mytable1 table
(
col1 int,
col2 xml
)
insert into @mytable1 values(1,null)
insert into @mytable1 values(2,null)
insert into @mytable values(1,'abc')
insert into @mytable values(1,'dcf')
insert into @mytable values(2,'efg')
insert into @mytable values(2,'hhh')
update x set col2= d.XMLCol from @mytable1 x
inner join
(select a.col1, node.XMLCol from @mytable a join @mytable1 b on a.col1=b.col1 cross apply (select a.col1,a.col2 for xml path('record') , root ('myroot'), type
) as node(XMLCol) )d
on x.col1=x.col1
select * from @mytable1
实际结果是
1 <myroot><record><col1>1</col1><col2>abc</col2></record></myroot>
2 <myroot><record><col1>2</col1><col2>hhh</col2></record></myroot>
预期结果是
1 <myroot><record><col1>1</col1><col2>abc</col2></record><record><col1>1</col1><col2>dcf</col2></record></myroot>
2 <myroot><record><col1>2</col1><col2>hhh</col2></record><record><col1>2</col1><col2>efg</col2></record></myroot>
有人可以指出我做错了什么吗?
谢谢,
埃森。