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?

¿Fue útil?

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
scroll top