¿Puedo usar una subconsulta dentro de una instrucción INSERT?
Pregunta
Necesito insertar una fila en una tabla, con un valor de campo calculado a partir de otra tabla. En lugar de hacer dos consultas y arriesgar una condición de carrera, pensé que sería mejor hacerlo todo en una sola declaración.
INSERT INTO `myTable` (`someData`, `averageAtThisTime`)
VALUES (
"some stuff",
SELECT AVG(`myField`) FROM `myOtherTable`
)
... pero esto no funciona. ¿Hay una manera de que pueda lograr esto en una declaración? Si no, ¿cuál es tu recomendación?
Solución
INSERT INTO `myTable` (`someData`, `averageAtThisTime`)
select "some stuff", AVG(`myField`)
FROM `myOtherTable`
Otros consejos
Su subconsulta debe estar entre paréntesis. Este código debería funcionar:
INSERT INTO `myTable` (`someData`, `averageAtThisTime`)
VALUES (
"some stuff",
(SELECT AVG(`myField`) FROM `myOtherTable`)
);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow