Select statement внутри оператора insert в sql возвращает несколько строк
У меня есть следующий структурированный запрос в mysql. Но его возвращение ошибки. В принципе, я хочу получить ценность из существующей таблицы и вставить в новую таблицу. Я попробовал следующее, но получил ошибку;
INSERT INTO `table1`(
`first`,`second`,`third`) VALUES(
(SELECT table2.timemodified FROM `xtable` AS table2,`ytable` AS table3
WHERE table3.id = table2.contextid),
(SELECT table4.id FROM `ztable` AS table4,`ytable` AS table3 WHERE table4.id = table3.instanceid),
(SELECT murs.id FROM `table5` AS murs,
`xtable` AS table2,
`wtable` AS table6,
`ytable` AS table3,
`vtable` AS table7
WHERE murs.id = table2.userid AND table6.id = table2.roleid AND table3.id = table2.contextid AND table7.instance = table3.instanceid AND table6.id =3)
);
Я тестировал, но ошибка: #1242 - Subquery returns more than 1 row
. Проблема в том, что я получаю больше одной записи из запроса select
внутри insert
. Как удалить такую ошибку.
Ответы
Ответ 1
общий запрос выглядит примерно так. где вы так меняете * имена столбцов, которые вы хотите выбрать!
INSERT INTO table1(first,second,third)
-- replace * with columns name first,second,third
select * from (
-- START YOU'RE select query
(SELECT table2.timemodified FROM `xtable` AS table2,`ytable` AS table3
WHERE table3.id = table2.contextid),
(SELECT table4.id FROM `ztable` AS table4,`ytable` AS table3 WHERE table4.id = table3.instanceid),
(SELECT murs.id FROM `table5` AS murs,
`xtable` AS table2,
`wtable` AS table6,
`ytable` AS table3,
`vtable` AS table7
WHERE murs.id = table2.userid AND table6.id = table2.roleid AND table3.id = table2.contextid AND table7.instance = table3.instanceid AND table6.id =3)
-- END YOU'RE select query
)
Я переместил вас в операторы select в подзапрос, чтобы вы могли использовать общий результат подзапросов. Преимущество.