Mengembalikan Nilai Lalai dengan SQL Apabila Baris Tunggal Tidak Ditemui
Apabila mendapatkan semula data daripada pangkalan data menggunakan pertanyaan SQL, selalunya wajar untuk kembalikan nilai lalai jika tiada baris yang sepadan ditemui. Ini amat berguna apabila menangani situasi di mana output pertanyaan bertujuan untuk paparan atau pemprosesan dalam aplikasi.
Pertanyaan Asal
Pertimbangkan pertanyaan SQL berikut, yang bertujuan untuk dapatkan semula item berjadual seterusnya untuk strim:
<code class="sql">SELECT `file` FROM `show`, `schedule` WHERE `channel` = 1 AND `start_time` <= UNIX_TIMESTAMP() AND `start_time` > UNIX_TIMESTAMP()-1800 AND `show`.`id` = `schedule`.`file` ORDER BY `start_time` DESC LIMIT 1</code>
Pertanyaan ini mengembalikan item dijadualkan terbaharu yang memenuhi kriteria yang ditentukan. Walau bagaimanapun, jika tiada baris yang sepadan ditemui (iaitu, tiada item yang dijadualkan dalam tempoh 30 minit yang lalu), hasil kosong dikembalikan.
Pendekatan Nilai Lalai
Untuk mengendalikan senario ini dan mengembalikan nilai lalai apabila tiada baris yang sepadan ditemui, beberapa pendekatan boleh digunakan:
COALESCE/IFNULL dengan Agregasi
Satu kaedah melibatkan penggunaan COALESCE atau IFNULL berfungsi bersama dengan fungsi agregat. Pendekatan ini memastikan bahawa nilai bukan nol dikembalikan walaupun hasil pertanyaan kosong. Contohnya:
<code class="sql">SELECT IFNULL(MIN(`file`), 'default.webm') `file` FROM `show`, `schedule` WHERE `channel` = 1 AND `start_time` <= UNIX_TIMESTAMP() AND `start_time` > UNIX_TIMESTAMP()-1800 AND `show`.`id` = `schedule`.`file` ORDER BY `start_time` DESC LIMIT 1</code>
Dalam pertanyaan ini, fungsi agregat MIN() digunakan untuk mengembalikan nilai minimum untuk lajur fail. Ini memastikan bahawa nilai NULL dikembalikan jika tiada baris dipilih. Fungsi IFNULL atau COALESCE kemudian menggantikan nilai NULL dengan nilai lalai 'default.webm'.
Penyelesaian ini mengembalikan nilai lalai dengan berkesan apabila tiada baris sepadan ditemui, membenarkan aplikasi mengendalikan ketiadaan item berjadual sewajarnya.
Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Nilai Lalai dalam SQL Apabila Tiada Baris Padanan Ditemui?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!