Добрый день. Всегда пользовался удобной штукой вида
INSERT INTO `table` (`id`, `count`, `f`) (SELECT `id`, 0 AS `count`, 'foo' AS `f` FROM `table2`);
То есть сразу вставлял возвращаемые вложенным запросом строки.
Теперь мне понадобилось немного изменить его
INSERT INTO `table` (`id`, `count`, `f`) (SELECT `id`, 0 AS `count`, 'foo' AS `f` FROM `table2` [куча where] UNION SELECT `id`, `count` AS `count`, 'bar' AS `f` FROM `table3` LIMIT 1);
Оказалось что MySQL не поддерживает UNION во вложенных запросах. :(
Появилась идея сохранять результат
(SELECT `id`, 0 AS `count`, 'foo' AS `f` FROM `table2` [куча where] UNION SELECT `id`, `count` AS `count`, 'bar' AS `f` FROM `table3` LIMIT 1); в переменную и потом как то пихать эту переменную в INSERT. Что то типа:
SET @record = (SELECT `id`, 0 AS `count`, 'foo' AS `f` FROM `table2` [куча where] UNION SELECT `id`, `count` AS `count`, 'bar' AS `f` FROM `table3` LIMIT 1);
INSERT INTO `table` (`id`, `count`, `f`) @record;
НО так не работает. Что можно сделать?
Заранее спасибо.