Jak mogę wstawić wartości do tabeli, używając podzapytania z więcej niż jednym wynikiem?


102

Byłbym wdzięczny za twoją pomoc.

Zapewne to dość prosty problem do rozwiązania - ale ja nie jestem jedyny .. ;-)

Mam dwie tabele w SQL Server:

  1. artykuł
  2. ceny

Teraz chcę wybrać określony zestaw identyfikatorów i wstawić niektóre wpisy do tabeli cen z tymi identyfikatorami.

np. (błędny i niedziałający SQL)

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

Błąd SQL -> podzapytanie ma więcej niż 1 wartość

dzięki za pomoc


5
Łał! Tak wiele poprawnych odpowiedzi w dniu 13 marca '12 o 21:18 (wskazówka: możesz najechać kursorem na znacznik czasu, aby uzyskać sekundy)
Rohmer

Odpowiedzi:


154

Chcesz:

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

gdzie po prostu zakodujesz stałe pola.


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 ()) wybierz max (Cse_M_ID) jako identyfikator z iden_course Jak dodać w tym zapytaniu
Sandeep

24

Spróbuj tego:

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

Jeśli wstawiasz jeden rekord do swojej tabeli, możesz to zrobić

INSERT INTO yourTable 
VALUES(value1, value2)

Ale ponieważ chcesz wstawić więcej niż jeden rekord, możesz użyć SELECT FROMw instrukcji SQL.

więc będziesz chciał to zrobić:

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

3

wygląda zapytanie podrzędne

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

Mam nadzieję, że to pomoże


1
INSERT INTO prices(group, id, price)
SELECT 7, articleId, 1.50
FROM article where name like 'ABC%';
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.