[英]SQL Update row with JOIN on the same table
我正在導入數據。 我有一棵要重建ID號的實例化樹。 我計划將數據從舊表導入到新表,然后根據新創建的IDS更新新表中所有行的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值。
您能否看到下面的sql結果,該結果在您的update語句中用於標識要更新的記錄...這會返回任何結果嗎?
從類別k INNER JOIN類別中選擇* k2 ON k.old_node_id = k2.id_parent
這將有助於查找應由update子句更新的行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.