MySQL IN () Operator
Apabila menanyakan pangkalan data MySQL, operator WHERE IN () sering digunakan untuk mendapatkan semula baris berdasarkan tertentu nilai dalam lajur. Sebagai contoh, pertanyaan berikut mendapatkan semula semua baris daripada jadual "jadual" di mana lajur "id" sepadan dengan mana-mana nilai (1, 2, 3, 4):
<code class="sql">SELECT * FROM table WHERE id IN (1,2,3,4);</code>
Walau bagaimanapun, isu timbul apabila rekod mempunyai berbilang nilai "id", seperti 1 dan 3. Dalam kes sedemikian, pertanyaan mungkin tidak mengembalikan baris tersebut.
Penyelesaian
Pertanyaan menterjemah kepada syarat ATAU berikut:
<code class="sql">SELECT * FROM table WHERE id='1' or id='2' or id='3' or id='4';</code>
Oleh itu, ia hanya akan mengembalikan baris yang sepadan dengan mana-mana syarat ini.
Untuk menyelesaikannya, satu pilihan ialah menggunakan jenis data SET untuk " lajur id". Ini membolehkan anda menyimpan berbilang nilai menggunakan rentetan yang dipisahkan koma. Anda kemudiannya boleh menggunakan fungsi FIND_IN_SET() untuk mencari nilai tertentu:
<code class="sql">SELECT * FROM table WHERE FIND_IN_SET('1', id);</code>
Pertanyaan ini akan mengembalikan semua baris yang mempunyai '1' sebagai salah satu nilai dalam lajur "id", tanpa mengira sebarang nilai lain yang mungkin ada.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Rekod dengan Berbilang Nilai dalam Klausa MySQL WHERE IN()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!