2012-06-12 13 views
10

Estoy tratando de insertar filas adicionales en una tabla que requiere que se recupere un valor de otra tabla. A continuación se muestra una consulta de ejemplo:Cómo usar 'seleccionar' en la instrucción 'insert' de MySQL

insert into a.grades (rollno, grade) 
values(select rollno from b.students where ssn=12345, 'A'); 

Estructura de la tabla es b.studentsrollno, ssn, name.

Sabía que la consulta anterior es incorrecta. ¿Hay alguna manera de recuperar 1 valor de otra tabla al insertar una fila?

+0

lo intenté sin paranthesis alrededor de la declaración de selección. Ahora lo tengo agregando(). – user1074122

Respuesta

30
INSERT INTO a.grades (rollno, grade) 
    SELECT rollno, 'A' FROM b.students WHERE ssn = 12345; 

Algunos DBMS aceptarían la siguiente, con un conjunto adicional de paréntesis alrededor de la instrucción SELECT:

INSERT INTO a.grades (rollno, grade) 
    VALUES((SELECT rollno FROM b.students WHERE ssn = 12345), 'A'); 
+1

lo obtuve de su segunda consulta. Gracias – user1074122

3

Las columnas de inserción en y seleccione debe ser igual

insert into grades (field1, field2) 
select field1,field2 from students where ssn=12345; 
Cuestiones relacionadas