使用xml数据更新MS SQL表

使用xml数据更新MS SQL表,sql,sql-server,Sql,Sql Server,我有XML格式的数据,希望将其更新到现有表中。 xml格式的数据如下所示: var xmldata = "<ansid>0</ansid><quesid>1</quesid><ansid>1</ansid><quesid>2</quesid><ansid>1</ansid><quesid>3</quesid>" 也许你可以用这个: DECLAR

我有XML格式的数据,希望将其更新到现有表中。 xml格式的数据如下所示:

var xmldata = "<ansid>0</ansid><quesid>1</quesid><ansid>1</ansid><quesid>2</quesid><ansid>1</ansid><quesid>3</quesid>"

也许你可以用这个:

    DECLARE @xml xml = '<ansid>0</ansid>
                        <quesid>1</quesid>
                        <ansid>1</ansid>
                        <quesid>2</quesid>
                        <ansid>1</ansid>
                        <quesid>3</quesid>'

    ;
    WITH ans as
    (
    SELECT t.x.value ('.', 'nvarchar(100)') ansid , ROW_NUMBER () OVER (ORDER BY (SELECT NULL)) Seq
    FROM @xml.nodes ('ansid') t(x)
    ), ques as 

    (
    SELECT t.x.value ('.', 'nvarchar(100)') quesid , ROW_NUMBER () OVER (ORDER BY (SELECT NULL)) Seq
    FROM @xml.nodes ('quesid') t(x)
    )
    SELECT ques.quesid, ans.ansid 
    FROM ans
    JOIN ques
    ON ques.Seq = ANS.Seq       

到目前为止您尝试了什么?您需要分解数据并执行更新连接
    DECLARE @xml xml = '<ansid>0</ansid>
                        <quesid>1</quesid>
                        <ansid>1</ansid>
                        <quesid>2</quesid>
                        <ansid>1</ansid>
                        <quesid>3</quesid>'

    ;
    WITH ans as
    (
    SELECT t.x.value ('.', 'nvarchar(100)') ansid , ROW_NUMBER () OVER (ORDER BY (SELECT NULL)) Seq
    FROM @xml.nodes ('ansid') t(x)
    ), ques as 

    (
    SELECT t.x.value ('.', 'nvarchar(100)') quesid , ROW_NUMBER () OVER (ORDER BY (SELECT NULL)) Seq
    FROM @xml.nodes ('quesid') t(x)
    )
    SELECT ques.quesid, ans.ansid 
    FROM ans
    JOIN ques
    ON ques.Seq = ANS.Seq       
quesid  ansid
     1      0
     2      1
     3      1