Я делаю импорт данных. У меня есть материализованное дерево, в котором я хочу восстановить идентификационные номера. Я планирую импортировать данные из старой таблицы в новую, а затем обновить parent_id всех строк в новой таблице на основе вновь созданных IDS.
Новая структура таблицы:
CREATE TABLE IF NOT EXISTS `category` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`category_name` varchar(255) NOT NULL,
`category_key` varchar(255) NOT NULL,
`ip` varchar(255) NOT NULL,
`id_parent` int(10) unsigned NOT NULL,
`depth` int(10) unsigned NOT NULL,
`old_node_Id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Как видите, в новой таблице я добавил дополнительный столбец с именем old_node_id, который я хочу использовать при обновлении. Импортированные данные выглядят так, как показано на прикрепленном экране.
Теперь я хочу перестроить родительские идентификаторы с помощью этого запроса.
UPDATE category k INNER JOIN category k2 ON k.old_node_id = k2.id_parent SET k.id_parent = k2.id
Но строки не затронуты. Возможно ли это сделать? У меня есть образцы данных:
INSERT INTO `category` (`id`, `category_name`, `category_key`, `ip`, `id_parent`, `depth`, `old_node_Id`) VALUES
(1, 'Test 1', '031', '025_026_027_031', 1382, 4, 1382),
(2, 'Test 2', '032', '025_026_027_032', 1382, 4, 1178),
(3, 'Test 3', '034', '025_026_027_034', 1382, 4, 1179);
Это строки из новой таблицы. Все, что мне нужно, это заменить значения id_parent новыми идентификаторами из столбца id.