Menggabungkan Pelbagai Nilai dalam Pertanyaan MySQL
Semasa bekerja dengan tatasusunan pengecam dalam MySQL, pembangun sering menghadapi cabaran membina klausa WHERE dinamik yang menerima pelbagai nilai. Sebagai contoh, pertimbangkan senario berikut:
Senario:
Memandangkan tatasusunan yang mengandungi ID pengguna, tugasnya adalah untuk mendapatkan semula rekod daripada jadual 'myTable' di mana lajur 'myField' sepadan dengan nilai dalam tatasusunan.
Pendekatan Asal:
Satu pendekatan melibatkan lelaran melalui elemen tatasusunan dan membina pernyataan "WHERE -- OR -- OR -- OR". Walaupun kaedah ini mungkin mencukupi untuk tatasusunan kecil, ia menjadi tidak cekap untuk tatasusunan yang besar.
Penyelesaian Dioptimumkan: IN Operator
Penyelesaian yang lebih cekap untuk masalah ini ialah menggunakan operator IN. Operator IN membenarkan anda untuk menentukan berbilang nilai terus dalam klausa WHERE, menghapuskan keperluan untuk keadaan OR berulang.
Contoh:
<code class="sql">$array = array(1,40,20,55,29,48); $sql = "SELECT * FROM `myTable` WHERE `myField` IN (" . implode(",", $array) . ")";</code>
Dalam contoh ini, implode(",", $array) menggabungkan elemen tatasusunan menjadi rentetan dipisahkan koma yang sesuai untuk digunakan dalam klausa IN.
Faedah:
Pengendali IN menawarkan beberapa kelebihan:
Atas ialah kandungan terperinci Cara Cekap Mengambil Rekod dengan Berbilang Nilai dalam MySQL: IN Operator vs. Kompleks ATAU Klausa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!