sql >> Database >  >> RDS >> Sqlserver

Meerdere knooppunten verwijderen in één XQuery voor SQL Server

Hoewel het verwijderen op deze manier een beetje onhandig is, kunt u in plaats daarvan een update uitvoeren om de gegevens te wijzigen, op voorwaarde dat uw gegevens eenvoudig zijn (zoals het voorbeeld dat u gaf). De volgende query splitst de twee XML-tekenreeksen in feite in tabellen, voegt ze samen, sluit de niet-null (overeenkomende) waarden uit en converteert deze terug naar XML:

UPDATE @table 
SET [column] = (
    SELECT p.i.value('.','int') AS c
    FROM [column].nodes('//i') AS p(i)
    OUTER APPLY (
        SELECT x.i.value('.','bigint') AS i
        FROM @parameter.nodes('//i') AS x(i)
        WHERE p.i.value('.','bigint') = x.i.value('.','int')
    ) a
    WHERE a.i IS NULL
    FOR XML PATH(''), TYPE
)


  1. sql orakel - verwijder dubbele waarde

  2. MySQL Databases vergelijken

  3. Hoe op te lossen Dialect-klasse niet gevonden:org.hibernate.dialect.MYSQLDialect-uitzondering?

  4. Database-ontwerp:één grote tabel of aparte tabellen?