Я пытаюсь выполнить оператор INSERT INTO, как показано ниже:
insert into table1 (id, data1, data2) select c.id, c.data1, (select a.id
from table3 a, table2 b where b.id=c.id and a.data3=b.data3) from table2 c;
По сути, здесь происходит то, что я переносю некоторые данные из одной таблицы в другую.Однако в новой таблице я хочу получить идентификатор строки из третьей таблицы, а не строку, которая была сохранена в исходной таблице.
Мне кажется, что мой запрос близок, однако когда я его запускаю, mysqlвыдача ошибки:
ERROR 1242 (21000): Subquery returns more than 1 row
Я думаю, что проблема в b.id=c.id
, но я не понимаю, почему c.id
не будет определенным значением.Если я заменим c.id
на известный идентификатор, запрос будет функционировать, как и ожидалось.
В более общем смысле мне нужно иметь доступ к «текущей строке», из которой я нахожусь, из результатов моего оператора selectи использовать его идентификатор в этом внутреннем операторе выбора.
Как сделать так, чтобы мой внутренний оператор выбора ссылался только на одну строку?
Это MySql 5.0.77, работающий в CentOS.