Kemas Kini Berbilang Rekod dalam SQL
Andaikan anda menghadapi senario di mana anda perlu mengemas kini berbilang rekod dalam jadual tertentu. Untuk mencapai ini, anda perlu memanfaatkan sintaks SQL yang sesuai. Dalam contoh ini, kami akan menggunakan jadual konfigurasi, yang mengandungi lajur untuk config_name dan config_value.
Pada mulanya, anda cuba melakukan kemas kini menggunakan pertanyaan berikut:
UPDATE config SET t1.config_value = 'value' , t2.config_value = 'value2' WHERE t1.config_name = 'name1' AND t2.config_name = 'name2';
Walau bagaimanapun, pertanyaan ini tidak betul kerana ia cuba mengemas kini rekod yang berbeza menggunakan alias jadual yang sama (t1 dan t2). Untuk menyelesaikan isu ini, anda boleh menggunakan sama ada sintaks kemas kini berbilang jadual atau kaedah kemas kini bersyarat:
Sintaks Kemas Kini Berbilang Jadual:
UPDATE config t1 JOIN config t2 ON t1.config_name = 'name1' AND t2.config_name = 'name2' SET t1.config_value = 'value', t2.config_value = 'value2';
Pertanyaan ini menyertai jadual konfigurasi dua kali, menggunakan alias t1 dan t2, dan kemudian menggunakan klausa ON untuk menentukan syarat gabungan. Klausa SET kemudiannya memberikan nilai baharu kepada lajur yang sesuai.
Kemas Kini Bersyarat:
UPDATE config SET config_value = CASE config_name WHEN 'name1' THEN 'value' WHEN 'name2' THEN 'value2' ELSE config_value END WHERE config_name IN('name1', 'name2');
Pertanyaan ini menggunakan pernyataan CASE untuk menentukan nilai yang berbeza untuk nama_konfigurasi yang berbeza nilai. Klausa WHERE mengehadkan kemas kini untuk hanya mempengaruhi rekod dengan nama_konfigurasi sama ada 'name1' atau 'name2'.
Kaedah ini menyediakan cara yang berkesan untuk mengemas kini berbilang rekod dalam satu pertanyaan. Dengan menggunakan sintaks yang sesuai, anda boleh mengubah suai data dalam pangkalan data SQL anda dengan cekap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Kemas Kini Berbilang Rekod dalam Satu Pertanyaan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!