Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menukar Nilai Lajur dalam MySQL Tanpa Menamakan Semula Lajur?

Bagaimanakah Saya Boleh Menukar Nilai Lajur dalam MySQL Tanpa Menamakan Semula Lajur?

Susan Sarandon
Susan Sarandonasal
2024-12-05 21:48:13399semak imbas

How Can I Swap Column Values in MySQL Without Renaming Columns?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn