Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menukar Nilai Lajur MySQL Tanpa Keizinan ALTER TABLE?

Bagaimanakah Saya Boleh Menukar Nilai Lajur MySQL Tanpa Keizinan ALTER TABLE?

Patricia Arquette
Lepaskan: 2024-12-08 08:10:10
asal
275 orang telah melayarinya

How Can I Swap MySQL Column Values Without ALTER TABLE Permissions?

Menukar Nilai Lajur MySQL dengan Kebenaran Terhad

Mengemas kini nilai lajur tanpa kebenaran untuk mengubah struktur pangkalan data boleh menimbulkan cabaran. Pendekatan intuitif menggunakan pernyataan KEMASKINI untuk menukar nilai, seperti jadual KEMASKINI SET X=Y, Y=X, tidak akan mencukupi. Sebaliknya, pertimbangkan kaedah berikut yang memintas perubahan struktur:

Kaedah 1

Gunakan pembolehubah sementara untuk menahan satu nilai sambil memberikan nilai yang lain. Ini memastikan kedua-dua nilai tidak ditindih dengan data yang sama.

UPDATE swap_test SET x=y, y=@temp WHERE (@temp:=x) IS NOT NULL;
Salin selepas log masuk

Kaedah 2

Tukar nilai menggunakan satu siri tugasan. Kaedah ini mengendalikan kedua-dua nilai NULL dan bukan NULL dengan elegan.

UPDATE swap_test SET x=(@temp:=x), x = y, y = @temp;
Salin selepas log masuk

Kaedah 3

Gunakan sambung sendiri untuk mengemas kini nilai merentas dua rujukan jadual. Kaedah ini memerlukan kunci utama atau indeks unik.

UPDATE swap_test s1, swap_test s2 SET s1.x=s1.y, s1.y=s2.x WHERE s1.id=s2.id;
Salin selepas log masuk

Setiap kaedah menawarkan kelebihan dan had yang unik. Kaedah 1 boleh mengendalikan nilai bukan NULL, manakala Kaedah 2 boleh mengendalikan nilai NULL dan bukan NULL. Kaedah 3 memerlukan kunci utama, tetapi membenarkan pertukaran merentas baris yang berbeza jika dikehendaki. Akhirnya, pendekatan terbaik bergantung pada keperluan khusus tugasan yang sedang dijalankan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Nilai Lajur MySQL Tanpa Keizinan ALTER TABLE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan