2010-04-14 10 views
5

E 'possibile fare qualcosa del genere:E 'possibile con sql?

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

Con something_from_another_table essere un comando SQL? Come, c'è qualcosa che posso fare è che equivelant a:

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

risposta

18

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

Dove value1 è il valore della 'altra tabella' e value2 è una costante che hai inserito in quella dichiarazione prescelta.

5

Prova questo:

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

È sicuramente possibile. Dovrebbe funzionare come nell'esempio qui sotto;

INSERT INTO Store_Information (store_name, Sales, Date) 
(SELECT store_name, Sales, Date FROM Sales_Information WHERE Year(Date) = 2010) 
0

quando si specifica la parola chiave "Valori" nell'istruzione di inserimento si sta tentando di inserire solo un valore. l'attuale modo di fare che sta assegnando il valore del "something_from_another_table" in una variabile e quindi, rendere il vostro inserto

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

In questo modo sarà sempre inserire un record. l'altro modo corretto inserirà n record come l'istruzione where può filtrare.

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