Ответ 1
INSERT INTO `myTable` (`someData`, `averageAtThisTime`)
select "some stuff", AVG(`myField`)
FROM `myOtherTable`
Мне нужно вставить строку в таблицу, причем одно значение поля вычисляется из другой таблицы. Вместо того, чтобы делать два запроса и рисковать условиями гонки, я думал, что было бы лучше сделать все это в одном заявлении.
INSERT INTO `myTable` (`someData`, `averageAtThisTime`)
VALUES (
"some stuff",
SELECT AVG(`myField`) FROM `myOtherTable`
)
... но это не работает. Есть ли способ, которым я могу достичь этого в одном заявлении? Если нет, то какова ваша рекомендация?
INSERT INTO `myTable` (`someData`, `averageAtThisTime`)
select "some stuff", AVG(`myField`)
FROM `myOtherTable`
Ваш подзапрос будет заключен в круглые скобки. Этот код должен работать:
INSERT INTO `myTable` (`someData`, `averageAtThisTime`)
VALUES (
"some stuff",
(SELECT AVG(`myField`) FROM `myOtherTable`)
);