Rumah >pangkalan data >tutorial mysql >## Bagaimana untuk Dapatkan dan Kemas Kini Baris MySQL dalam Operasi Tunggal Tanpa Subkueri?
Pertanyaan untuk Dapatkan dan Kemas Kini Baris MySQL dalam Operasi Tunggal
Menggabungkan pertanyaan SELECT dan UPDATE ke dalam satu operasi boleh meningkatkan kecekapan dan mengurangkan kod kerumitan. Artikel ini meneroka penyelesaian untuk mencapai objektif ini tanpa menggunakan subkueri.
Teka-teki
Seorang pengguna meminta bantuan dalam menggabungkan pertanyaan MySQL berikut:
SELECT * FROM table WHERE group_id = 1013 and time > 100;UPDATE table SET time = 0 WHERE group_id = 1013 and time > 100
Prosedur berikut bernama "update_and_retrieve" menyelesaikan tugas:
Prosedur Invocation
Untuk menggunakan prosedur tersimpan, hanya laksanakan penyataan berikut:<code class="mysql">CREATE PROCEDURE update_and_retrieve(IN group_id INT, IN time INT) BEGIN DECLARE updated_ids VARCHAR(255); UPDATE table SET time = 0 WHERE group_id = group_id AND time > time; SET updated_ids = (SELECT GROUP_CONCAT(fooid) FROM table WHERE group_id = group_id AND time > time); SELECT * FROM table WHERE fooid IN (updated_ids); END;</code>Ini akan mengemas kini medan "masa" kepada sifar untuk baris yang layak dan kemudian mendapatkan dan memaparkan baris yang dikemas kini itu.
Faedah
Pendekatan ini menawarkan beberapa kelebihan:<code class="mysql">CALL update_and_retrieve(1013, 100);</code>Mengelakkan perjalanan pergi balik rangkaian yang tidak perlu dengan menggabungkan berbilang operasi ke dalam satu panggilan.
Memudahkan struktur kod dengan menghapuskan keperluan untuk pertanyaan berasingan.
Meningkatkan prestasi dengan mengurangkan beban pangkalan data.Atas ialah kandungan terperinci ## Bagaimana untuk Dapatkan dan Kemas Kini Baris MySQL dalam Operasi Tunggal Tanpa Subkueri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!