Requête SQL Server – comment insert des valeurs sélectionnées dans une autre table

Voici ce que j'essaie de faire.

C'est l'instruction select

select Id from tblUsersPokemons where UserId = 1 and PokemonPlace = 'bag' 

Maintenant, je veux insert ces Ids returnnés dans une autre table comme ceci:

 foreach all returned Ids insert into tblNpcBattleUsersPokemons values (Id, 1) 

Comment puis je faire ça ?

Comme ça:

 insert into tblNpcBattleUsersPokemons select Id, 1 from tblUsersPokemons where UserId=1 and PokemonPlace='bag' 

Cela peut être fait dans un seul appel sql

 insert into tblNpcBattleUsersPokemons (id, [whatever the name of the other column is]) select Id, 1 from tblUsersPokemons where UserId=1 and PokemonPlace='bag' 

J'ai utilisé le longhand ici car il ne fait aucune hypothèse sur l'ordre des colonnes dans la table de destination, ce qui peut changer au fil du time et invalider votre instruction d'insertion.

Vous pouvez insert l'set récupéré par un SELECT dans une autre table existante en utilisant la syntaxe INSERT … SELECT.

Par exemple:

 INSERT INTO tblNpcBattleUsersPokemons (Id, Val) -- not sure what the second column name was SELECT Id FROM tblUsersPokemons WHERE UserID = 1 and PokemonPlace='bag';