web-dev-qa-db-fra.com

INSERT SQL basé sur les résultats SELECT

Pardonnez-moi car je suis relativement nouveau pour SQL. Mais j'essaie de prendre des données modifiées à partir d'une requête SELECT sur une table et de l'utiliser pour remplir des données dans une autre table.

SELECT ID FROM TABLE WHERE VALUE=10

Je veux insérer les ID résultants dans une autre table, mais avec des modifications telles que la valeur est:

1stString.ID.2ndString

J'ai trouvé des réponses sur la façon d'utiliser l'ID du SELECT dans l'encart, mais je n'arrive pas à le faire fonctionner lorsque j'essaie de concaténer. Il y a aussi d'autres valeurs que j'insère, mais ce sont des littéraux (j'essaie d'initialiser les paramètres de clé par défaut pour les ID donnés dans un autre tableau.

À l'aide de MS SQL Studio 2008, btw.

28
Matt D
INSERT INTO table (field)
SELECT '1stString.' + cast(id as varchar(50)) + '.2ndString' 
FROM table2 
WHERE id = 10

Modifier - réponse au commentaire: vous êtes sur la bonne voie, mais vous souhaitez sélectionner vos chaînes codées en dur dans votre tableau, comme ceci:

INSERT INTO table1 (field1, field2, field3)
SELECT '1stVal', '2ndVal', '1stString.' + cast(id as varchar(50)) + '.2ndString' 
FROM table2 
WHERE id = 10

Cela est également illustré dans la réponse de Dustin Laine.

42
rosscj2533
INSERT table1
(
    f1, f2, f3, f4
)
SELECT f1, f2, f3, 'defaultval' as f4
FROM table2
WHERE value = 1
11
Dustin Laine