Могу ли я использовать подзапрос внутри оператора INSERT? - PullRequest
10 голосов
/ 06 марта 2009

Мне нужно вставить строку в таблицу, при этом одно значение поля вычисляется из другой таблицы. Вместо того, чтобы делать два запроса и рисковать состоянием гонки, я подумал, что было бы лучше сделать все это одним утверждением.

INSERT INTO `myTable` (`someData`, `averageAtThisTime`)
VALUES (
    "some stuff",
    SELECT AVG(`myField`) FROM `myOtherTable`
)

... но это не работает. Есть ли способ, которым я могу достичь этого в одном утверждении? Если нет, то какова ваша рекомендация?

Ответы [ 2 ]

23 голосов
/ 06 марта 2009
INSERT INTO `myTable` (`someData`, `averageAtThisTime`)
select "some stuff", AVG(`myField`) 
FROM `myOtherTable`
5 голосов
/ 23 января 2012

Ваш подзапрос должен быть заключен в скобки. Этот код должен работать:

INSERT INTO `myTable` (`someData`, `averageAtThisTime`)
VALUES (
"some stuff",
(SELECT AVG(`myField`) FROM `myOtherTable`)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...