Menukar Nilai Lajur dalam MySQL tanpa Menamakan Semula
Pertukaran nilai antara lajur dalam jadual MySQL boleh menjadi operasi yang berguna apabila lajur sedia ada memesan tidak lebih lama sejajar dengan keperluan anda. Walau bagaimanapun, mengubah suai struktur jadual untuk menamakan semula lajur mungkin tidak dapat dilaksanakan kerana sekatan kebenaran.
Sebaliknya, anda boleh menggunakan teknik berikut:
Kaedah 1: Menggunakan Pembolehubah Sementara
UPDATE swap_test SET x=y, y=@temp WHERE (@temp:=x) IS NOT NULL;
Kaedah ini menggunakan pembolehubah sementara untuk memegang nilai satu lajur semasa mengemas kini yang lain. Walau bagaimanapun, ia tidak mengendalikan nilai NULL dengan berkesan.
Kaedah 2: Penyelesaian Elegan Dipin
UPDATE swap_test SET x=(@temp:=x), x = y, y = @temp;
Pendekatan Dipin secara elegan menukar nilai, berfungsi sama baik dengan dan tanpa nilai NULL.
Kaedah 3: Menggunakan Silang Silang
UPDATE swap_test s1, swap_test s2 SET s1.x=s1.y, s1.y=s2.x WHERE s1.id=s2.id;
Kaedah ini menggunakan silang silang antara jadual yang sama untuk melakukan pertukaran. Ia memerlukan kunci utama untuk hadir dalam jadual.
Contoh Skema Jadual
CREATE TABLE `swap_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `x` varchar(255) DEFAULT NULL, `y` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB; INSERT INTO `swap_test` VALUES ('1', 'a', '10'); INSERT INTO `swap_test` VALUES ('2', NULL, '20'); INSERT INTO `swap_test` VALUES ('3', 'c', NULL);
Dengan memilih kaedah yang paling sesuai berdasarkan struktur jadual dan kekangan anda, anda boleh berjaya menukar nilai lajur tanpa memerlukan penamaan semula lajur atau peningkatan kebenaran.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Nilai Lajur dalam MySQL Tanpa Menamakan Semula Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!