Apabila mendapatkan semula data daripada pangkalan data MySQL, selalunya perlu untuk memesan keputusan dalam satu urutan. Kaedah IN() boleh digunakan untuk mendapatkan semula rekod berdasarkan senarai nilai yang telah ditetapkan, tetapi cabaran timbul apabila anda ingin mengekalkan susunan nilai dalam klausa IN() dalam set hasil.
Isunya:
Andaikan anda mempunyai tatasusunan PHP yang mengandungi nombor ID tersusun dan ingin menggunakan kaedah IN() untuk mengambil rekod yang sepadan daripada jadual MySQL. Walau bagaimanapun, anda memerlukan rekod ini dikembalikan dalam susunan yang sama seperti yang dinyatakan dalam klausa IN().
Penyelesaian:
Fungsi berkuasa yang boleh menyelesaikannya cabaran ialah FIELD(). Ia dikenali terutamanya sebagai fungsi rentetan, tetapi ia juga berfungsi dengan berkesan dengan data berangka. Dengan menggunakan FIELD(), anda boleh menentukan susunan nilai yang diingini dalam klausa IN() dan MySQL akan menyusun hasilnya dengan sewajarnya.
Contoh:
Mari kita pertimbangkan tatasusunan PHP berikut dengan nombor ID tersusun:
$ids = [4, 7, 3, 8, 9];
Untuk mendapatkan semula rekod yang sepadan daripada jadual bernama artikel, sambil mengekalkan susunan ID, anda boleh menggunakan pertanyaan MySQL berikut:
SELECT * FROM articles ORDER BY FIELD(id, 3, 2, 5, 7, 8, 1);
Dalam pertanyaan ini, fungsi FIELD() digunakan untuk mengisih hasil berdasarkan susunan nilai dalam parameter kedua. Perintah yang dinyatakan dalam klausa IN() ialah [4, 7, 3, 8, 9], tetapi kami mahu hasilnya dikembalikan sebagai: 3, 2, 5, 7, 8, 1. Oleh itu, kami menyediakan nilai dalam susunan yang tepat sebagai parameter kedua untuk FIELD(). Ini memastikan bahawa artikel dikembalikan dalam urutan yang diingini.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memesan Keputusan Pertanyaan MySQL mengikut Urutan Tersuai Menggunakan IN() dan FIELD()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!