Mise à jour de la Table temporaire
Requête:
SELECT ID, T.c.value('@Address', 'nvarchar(20)' ) as Address
INTO #TMP
FROM TABLE1
CROSS APPLY XMLData.nodes('/Document') AS T(c)
UPDATE TABLE1
SET HomeAddress = (SELECT TOP 1 t.Address
FROM #TMP t
WHERE t.ID = ID)
Surtout, j'ai besoin de copier des données à partir d'un champ XML à la normale dans les champs de la même table.
Questions:
- Aucune raison de tous les documents de la HomeAddress sur la table Table1?
- Est vraiment Curseur de la seule façon de mettre à jour la valeur de Table1?
double possible de mise à Jour d'une table à l'aide de la REJOINDRE dans SQL Server?
OriginalL'auteur SF Developer | 2013-02-27
Vous devez vous connecter pour publier un commentaire.
Utiliser une jointure. Pas besoin de temp table ou de la sous-requête corrélée.
Si le tableau 1 est un seul de beaucoup de relationshisp ces quelques posibilites pour le traitement de cette. Si vous havea valeur qui indique qu'un et un seul enregistrement (nous avons un champ dans notre système, qui prend le plus important de l'adresse, il est maintenu avec un seuil de déclenchement de la garantie uniquesness), essayez ceci:
Si vous avez besoin de base de l'unique enregistrement sur asome autre domaine (comme la date la plus récente), puis essayez une variante de ceci:
les valeurs réelles sont à l'intérieur d'un champ XML. Je viens de mettre à jour la question d'origine.
excellent point. Bien sûr, la version actuelle n'est pas spécifiant à utiliser dans ce cas. Permettez-moi de bricoler quelques exemples.
OriginalL'auteur HLGEM
Sur la mise à jour, j'ai besoin de QUALIFIER ENTIÈREMENT le Tableau comme suit:
UPDATE TABLE1
JEU DE TABLE1.HomeAddress = (SELECT TOP 1 t.Adresse
DE #TMP t
OÙ t.ID = TABLE1.ID)
OriginalL'auteur SF Developer
-- Notez que le 'GO' sont importantes pour préserver le contexte dans SQL Server 2017, sinon, vous allez trouver un
"inconnu nom de champ' erreur.
OriginalL'auteur Alejandro Bit Chakoch