Wie kann ich Werte in eine Tabelle einfügen, indem ich eine Unterabfrage mit mehr als einem Ergebnis verwende?

96

Ich würde mich sehr über Ihre Hilfe freuen.

Wahrscheinlich ist es ein recht einfaches Problem zu lösen - aber ich bin nicht derjenige .. ;-)

Ich habe zwei Tabellen in SQL Server:

  1. Artikel
  2. Preise

Jetzt möchte ich einen bestimmten Satz von IDs auswählen und einige Einträge mit diesen IDs in die Preistabelle einfügen.

zB (falsches und nicht funktionierendes SQL)

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

SQL-Fehler -> Unterabfrage hat mehr als 1 Wert

danke für die Hilfe

Futuretec
quelle
5
Beeindruckend! So viele richtige Antworten alle am 13. März 12 um 21:18 Uhr (Hinweis: Sie können mit der Maus über den Zeitstempel fahren, um die Sekunden zu erhalten)
Rohmer

Antworten:

148

Sie wollen:

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

wo Sie nur die konstanten Felder fest codieren.

Mike Ryan
quelle
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 ()) wählen max (Cse_M_ID) als ID von iden_course wie in dieser Abfrage hinzufügen
SANDEEP
23

Versuche dies:

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

Wenn Sie einen Datensatz in Ihre Tabelle einfügen, können Sie dies tun

INSERT INTO yourTable 
VALUES(value1, value2)

Da Sie jedoch mehr als einen Datensatz einfügen möchten, können Sie SELECT FROMin Ihrer SQL-Anweisung ein verwenden.

Sie werden dies also tun wollen:

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

Die Unterabfrage sieht aus wie

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

Ich hoffe das hilft

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