私は2つのテーブルを持っています。1つのテーブルはキー列とxml列を保持します。他のテーブルはデータを保持します。2番目のテーブルからxmlを作成し、最初のテーブルを更新しようとすると。1つのノードのみを更新し、2番目のノードを無視します。この例を参照してください。
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>
誰かが私が間違っていることを指摘できますか?
ありがとう、
エセン。