2017-03-28 3 views
0

J'ai une situation comme celle-ci:Comment entrer plusieurs valeurs de variables à la fois?

Declare @studentId INT = 12; 
INSERT INTO someTable (col1, col2) 
SELECT @studentId, someValueForCol2 from anotherTable where isActive = 1 

la variable StudentID prend 10 valeurs différentes. Une façon est de changer manuellement la valeur de la variable et d'exécuter la requête 10 fois, mais il semble que ce n'est pas la bonne façon de le faire. Y at-il un moyen de donner toutes ces 10 valeurs à la requête en même temps? Pour clarifier: Si l'instruction select renvoie 20 enregistrements qu'il faudrait 200 insertions dans la base de données, 20 enregistrements pour chaque studentId. Merci

+0

excluez-vous l'itération? est-ce juste en sql? vous pouvez interagir pour le faire, en utilisant n'importe quel langage de type de script. – blamb

+0

@blamb pas besoin de recourir à la boucle pour quelque chose comme ça. –

+0

Je rassemble votre droit, comme un ingénieur de pile complète ce sont mes solutions, je n'aime pas sql trop compliqué, votre réponse est plus élégante, pas sûr si cela va fonctionner, mais il est concis, mal vous donner cela. – blamb

Répondre

2

Vous pouvez utiliser un constructeur de table valorisé pour cela. Supposons que vous ayez deux valeurs ID étudiant de 1 et 2. Voici comment vous pouvez le faire.

SELECT Students.StudentID 
    , someValueForCol2 
from anotherTable 
cross join (values(1),(2))Students(StudentID) 
where isActive = 1 
+0

Oui, ça marche bien et je vois ce que tu fais. J'aime cette solution. – DoArNa

+0

Si cela fonctionne, vous devriez envisager de le marquer comme la réponse. –

+0

J'essaie de le marquer plus tôt mais ne me permettait pas de le faire en disant qu'il était trop tôt pour accepter une réponse lol – DoArNa