142 votes

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

J'apprécierais vraiment votre aide.

C'est probablement un problème assez simple à résoudre - mais je ne suis pas le seul .. ;-)

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 la table des prix avec ces identifiants.

par exemple (mauvais et ne fonctionne pas SQL)

 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

219voto

Mike Ryan Points 1754

Vous voulez:

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

où vous venez de coder en dur les champs constants.

32voto

Stefan H Points 4415

Essaye ça:

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

16voto

bluefeet Points 105508

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

 INSERT INTO yourTable 
VALUES(value1, value2)

Mais comme vous souhaitez insérer plusieurs enregistrements, vous pouvez utiliser un SELECT FROM dans votre instruction SQL.

donc vous voudrez faire ceci:

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

14voto

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

5voto

la sous-requête ressemble à

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

j'espère que cette aide

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X