2010-04-14 12 views
5

¿Es posible hacer algo como esto:¿Es esto posible con sql?

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

Con something_from_another_table ser un comando SQL? Al igual que, ¿hay algo que pueda hacer eso es equivelant a:

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

Respuesta

18

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

Donde valor 1 es el valor de la 'otra mesa' y valor2 es una constante que se ha incluido en esa sentencia de selección.

5

Prueba esto:

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

Usted definitivamente puede. Debería funcionar de manera similar al ejemplo a continuación;

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

cuando especifica la palabra clave "Valores" en la instrucción de inserción que está tratando de insertar solo un valor. la actual forma de hacerlo es asignar el valor de la "something_from_another_table" en una variable y, a continuación, hacer su inserción

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

En esta forma siempre se insertará un registro. la otra forma correcta insertará n record como la instrucción where puede filtrar.

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