我正在导入数据。我有一个物化树,我想重建ID号码。 我计划将数据从旧表导入到新表,然后根据新创建的ID更新新表中所有行的parent_id。
新表格结构:
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的列,我想在更新中使用它。导入的数据类似于附加的屏幕。
现在我想用这个查询重建父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列中的新ID替换id_parent值。
答案 0 :(得分:0)
你能看到下面的sql结果,你的update语句用它来识别要更新的记录...... 这会返回任何结果吗?
select * from category k INNER JOIN category k2 ON k.old_node_id = k2.id_parent
这将有助于查找应由update子句更新的行。