it-swarm.com.de

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

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

Wahrscheinlich ist es ein ganz einfaches Problem - 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.

z.B. (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

77
Futuretec

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.

126
Mike Ryan

Versuche dies:

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

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

INSERT INTO yourTable 
VALUES(value1, value2)

Da Sie jedoch mehrere Datensätze einfügen möchten, können Sie ein SELECT FROM in Ihrer SQL-Anweisung.

also werden Sie dies tun wollen:

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

die Unterabfrage sieht aus wie

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

ich hoffe das hilft

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