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


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.


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

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

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

3

Die Unterabfrage sieht aus wie

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

Ich hoffe das hilft


1
INSERT INTO prices(group, id, price)
SELECT 7, articleId, 1.50
FROM article where name like 'ABC%';
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.