簡體   English   中英

在同一表上具有JOIN的SQL Update行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM