En combinant quelques exemples, j'ai trouvé la requête suivante (les champs et les noms de tables ont été anonymisés, donc j'espère que je n'ai pas inséré de fautes de frappe).Mise à jour de plusieurs lignes avec des données aléatoires d'une autre table?
UPDATE destinationTable
SET destinationField = t2.value
FROM destinationTable t1
CROSS APPLY (
SELECT TOP 1 'SomeRequiredPrefix ' + sourceField as value
FROM #sourceTable
WHERE sourceField <> ''
ORDER BY NEWID()
) t2
Problème Actuellement, tous les enregistrements obtiennent la même valeur en destinationField
, la valeur doit être aléatoire et différent. Il me manque probablement quelque chose ici.
Ceci fonctionne mieux mais ne fait pas encore tout ce qu'il devrait. Les données sont aléatoires mais #sourcetable enregistre moins la table de destination, donc je pense à utiliser une LEFT OUTER JOIN, sinon #sourceTable limite le nombre de mises à jour de lignes dans la table des destinations. Il semble quand même important de conserver "WHERE sourceField <>" "car beaucoup d'enregistrements source ont '' dans sourceField. – TTT
Pourtant, êtes-vous sûr que c'est "UPDATE dt"? "Pas UPDATE destinationtable"? – TTT
@TTT Combien d'enregistrements y a-t-il dans chaque table? – SQLChao