Saya sedang mengimpor data. Saya memiliki pohon yang terwujud di mana saya ingin membangun kembali nomor ID. Saya berencana mengimpor data dari tabel lama ke tabel baru, lalu memperbarui parent_id semua baris di tabel baru berdasarkan IDS yang baru dibuat.
Struktur tabel baru:
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 ;
Seperti yang Anda lihat, di tabel baru saya telah menambahkan kolom tambahan bernama old_node_id yang ingin saya gunakan dalam pembaruan. Data yang diimpor tampak seperti di layar terlampir.
Sekarang saya ingin membangun kembali id induk dengan kueri ini
UPDATE category k INNER JOIN category k2 ON k.old_node_id = k2.id_parent SET k.id_parent = k2.id
Namun tidak ada baris yang terpengaruh. Apakah mungkin melakukan itu? Saya punya contoh data:
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);
Itu adalah baris dari tabel baru. Yang harus saya lakukan hanyalah mengganti nilai id_parent dengan ID baru dari kolom id.