web-dev-qa-db-fra.com

Comment puis-je insérer des valeurs dans une table, en utilisant une sous-requête avec plus d'un résultat?

J'apprécierais vraiment votre aide.

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

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 quelques entrées dans la table 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

77
Futuretec

Tu veux:

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.

126
Mike Ryan

Essaye ça:

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

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 FROM dans votre instruction SQL.

alors vous voudrez faire ceci:

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

la sous-requête ressemble à

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

espérons que cette aide

2
INSERT INTO prices(group, id, price)
SELECT 7, articleId, 1.50
FROM article where name like 'ABC%';
1
Teja