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


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.


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%';

12
INSERT INTO prices (group, id, price)
  SELECT 7, articleId, 1.50 FROM article WHERE name LIKE 'ABC%'

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%'

3

la sous-requête ressemble à

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

espère cette aide


1
INSERT INTO prices(group, id, price)
SELECT 7, articleId, 1.50
FROM article where name like 'ABC%';
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.