2010-04-14 12 views
5

Czy można zrobić coś takiego:Czy to możliwe z sql?

INSERT INTO table(col1, col2) VALUES(something_from_another_table, value); 

Z something_from_another_table bycia polecenia SQL? Jak jest tam coś, co mogę zrobić, to equivelant do:

INSERT INTO table(col1, col2) VALUES((SELECT value FROM table2 WHERE id = 3), value); 

Odpowiedz

18

Tak

INSERT INTO table(col1, col2) 
SELECT value1, 'value2' FROM table2 WHERE id = 3 

Gdzie wartosc1 jest wartość z „innej tabeli” i wartość2 jest stała, które zostały zawarte w tej instrukcji select.

5

Spróbuj tego:

INSERT INTO table(col1, col2) 
SELECT table2.value1, value2 FROM table2 WHERE table2.id = 3; 
0

Ty na pewno można. Powinien działać podobnie, jak w przykładzie poniżej;

0

po określeniu słowa kluczowego "Wartości" w instrukcji wstawiania, którą próbujesz wstawić tylko wartość. obecny sposób to zrobić jest przypisanie wartości z „something_from_another_table” do zmiennej, a następnie dokonać wkładkę

DECLARE @ANYVALUE AS VARCHAR(40) 
SELECT @ANYVALUE = ANYFIELD FROM table2 WHERE id = 3 
INSERT INTO table1 (FIELD1, FIELD2) VALUES(@ANYVALUE, VALUE2) 

W ten sposób zawsze będzie wstawić jeden rekord. w inny poprawny sposób wstawi się n rekord, ponieważ instrukcja where może filtrować.

INSERT INTO Store_Information (store_name, Sales, Date) 
(SELECT store_name, Sales, Date FROM Sales_Information WHERE Year(Date) = 2010) 
Powiązane problemy