Rumah >pangkalan data >tutorial mysql >KEMASKINI MySQL dengan CASE: Mengapa Ia Mengemas kini Semua Baris dan Bagaimana untuk Membetulkannya?
Kemas Kini MySQL dengan CASE: Tingkah Laku dan Penyelesaian Tidak Dijangka
Apabila menggunakan pernyataan CASE dalam pertanyaan MySQL UPDATE, adalah penting untuk memahami kesannya terhadap data. Dalam contoh yang disediakan, pertanyaan asal bertujuan untuk mengemas kini baris tertentu berdasarkan medan id mereka. Walau bagaimanapun, pertanyaan mengemas kini semua 25 juta baris secara mengejut, memperkenalkan nilai NULL.
Tingkah laku ini berpunca daripada sifat pernyataan CASE. Tanpa klausa ELSE, MySQL mentafsir sebarang syarat yang hilang sebagai menyamai NULL. Oleh itu, semua baris yang tidak sepadan dengan nilai id yang ditentukan telah dikemas kini dengan NULL untuk lajur uid.
Untuk menyelesaikan isu ini dan mengemas kini baris tertentu secara selektif sambil mengekalkan data lain, pertimbangkan untuk menggunakan klausa ELSE untuk menyediakan lalai nilai atau mengekalkan nilai sedia ada. Selain itu, nyatakan baris yang perlu dikemas kini menggunakan klausa WHERE.
Sebagai contoh, pertanyaan diubah suai berikut menangani kebimbangan ini:
UPDATE `table` SET `uid` = CASE WHEN id = 1 THEN 2952 WHEN id = 2 THEN 4925 WHEN id = 3 THEN 1592 ELSE `uid` END WHERE id in (1,2,3)
Pertanyaan ini kini mengemas kini hanya baris dengan nilai id daripada 1, 2, dan 3, meninggalkan baris yang selebihnya tidak terjejas. Dengan menggabungkan pernyataan CASE dengan klausa ELSE dan klausa WHERE, anda boleh mengemas kini baris tertentu dengan cekap tanpa mengubah suai data lain dalam jadual secara tidak sengaja.
Atas ialah kandungan terperinci KEMASKINI MySQL dengan CASE: Mengapa Ia Mengemas kini Semua Baris dan Bagaimana untuk Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!