Comment puis-je insérer des valeurs dans une table, en utilisant une sous-requête avec plusieurs résultats?

96

J'apprécierais vraiment votre aide.

C'est probablement un problème assez simple à résoudre - mais ce n'est pas moi qui suis .. ;-)

J'ai deux tables dans SQL Server:

  1. article
  2. des prix

Maintenant, je veux sélectionner un certain ensemble d'identifiants et insérer des entrées dans le tableau des prix avec ces identifiants.

par exemple (SQL incorrect et ne fonctionne pas)

INSERT INTO prices (group, id, price) 
VALUES (7, (select articleId from article WHERE name LIKE 'ABC%'), 1.50);

Erreur SQL -> la sous-requête a plus d'une valeur

Merci pour l'aide

Futuretec
la source
5
Hou la la! Autant de réponses correctes le 13 mars 12 à 21 h 18 (indice: vous pouvez survoler l'horodatage pour obtenir les secondes)
Rohmer

Réponses:

148

Tu veux:

insert into prices (group, id, price)
select 
    7, articleId, 1.50
from article where name like 'ABC%';

où vous codez simplement les champs constants.

Mike Ryan
la source
INSERT INTO iden_course(Cse_M_ID, Cse_M_Name, Cse_M_ShName, Cse_M_TotSem, Cse_M_CreatedDate) VALUES ( 'ID', 'BJF', 'BJfg', '4', Now ()) select max (Cse_M_ID) comme ID de iden_course comment ajouter dans cette requête
SANDEEP
23

Essaye ça:

INSERT INTO prices (
    group, 
    id,
    price
) 
SELECT
    7,
    articleId,
    1.50
FROM
    article 
WHERE 
    name LIKE 'ABC%';
Stefan H
la source
12
INSERT INTO prices (group, id, price)
  SELECT 7, articleId, 1.50 FROM article WHERE name LIKE 'ABC%'
Terkel
la source
12

Si vous insérez un enregistrement dans votre table, vous pouvez faire

INSERT INTO yourTable 
VALUES(value1, value2)

Mais puisque vous souhaitez insérer plusieurs enregistrements, vous pouvez utiliser un SELECT FROMdans votre instruction SQL.

vous voudrez donc faire ceci:

INSERT INTO prices (group, id, price) 
SELECT 7, articleId, 1.50
from article 
WHERE name LIKE 'ABC%'
Taryn
la source
3

la sous-requête ressemble à

 insert into table_name (col1,col2,....) values (select col1,col2,... FROM table_2 ...)

espère cette aide

Muhannad A. Alhariri
la source
1
INSERT INTO prices(group, id, price)
SELECT 7, articleId, 1.50
FROM article where name like 'ABC%';
Teja
la source