2017-09-20 1 views
-2
UPDATE Record SET Record.CreateID = c.CreateID 
FROM @RecordIDList r ,@CreateIDList c 
WHERE r.ID = Record.ID 

Ici @RecordIDList et @CreateIDList sont la clause de sortie agissant comme l'identité de portée pour plusieurs lignes cette requête fonctionne bien la seule question que je suis confronté est maintenant si @RecordIDList a 5 Ids pour l'enregistrement, il met à jour l'enregistrement tableau mais en le mettant à jour avec le même c.CreateID pour les 5 lignes et en mettant le top 1 c.CreateID. Ai-je manqué quelque chose ou de faire quelque chose de mal? J'utilise SSMS 2014Requête Mise à jour MSSQL

Record.ID | Content | CreateID 
------------------------- 
     1 | Khar | 1 
     2 | SantaCr | 2 
     3 | Sion | 3 
     4 | VT  | 4 
     5 | newFort | 5 
     6 | Bandra | 6 
     7 | Worli | 7 


CreateID | Date  | 
------------------------- 
     1 | 21-09-2017 | 
     2 | 21-09-2017 | 
     3 | 21-09-2017 | 
     4 | 21-09-2017 | 
     5 | 21-09-2017 | 
     6 | 21-09-2017 | 
     7 | 21-09-2017 | 
+2

http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using -old-style-joins.aspx –

+3

En ce qui concerne la question, nous aurions besoin de quelque chose pour travailler. Échantillonner les données et la structure de la table à tout le moins. –

+0

@SeanLange Deux oiseaux, une pierre;) – Sami

Répondre

0

sont des variables de table @RecordIDList et @CreateIDList? Si oui, cela mettra à jour @RecordIDList des dossiers correspondant à @CreateIDList:

UPDATE r 
    SET r.CreateID = c.CreateID 
FROM @RecordIDList r 
    JOIN @CreateIDList c 
     ON c.ID = r.ID 
+0

Voir la structure du tableau –