Memelihara Pesanan Tertentu dalam Pertanyaan "IN" MySQL
Apabila membuat pertanyaan data menggunakan MySQL, pengendali "IN" membenarkan anda memilih berdasarkan rekod pada satu set nilai. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa gelagat lalai pertanyaan ini tidak mengekalkan susunan nilai yang dinyatakan.
Masalah:
Dalam senario yang anda ada jadual dengan kunci utama yang ditambah secara automatik, anda mungkin menghadapi situasi di mana keputusan pertanyaan "IN" disusun berdasarkan kunci utama dan bukannya susunan yang ditentukan daripada nilai. Ini boleh menjadi masalah jika anda ingin mengekalkan urutan keputusan.
Penyelesaian:
Untuk mencapai pesanan yang diingini, anda boleh menggunakan fungsi FIELD() dalam berganding dengan klausa ORDER BY. Fungsi FIELD() memberikan kedudukan kepada nilai berdasarkan susunan yang dipaparkan dalam senarai argumennya. Berikut ialah contoh:
SELECT * FROM foo f WHERE f.id IN (2, 3, 1) ORDER BY FIELD(f.id, 2, 3, 1);
Dalam pertanyaan ini, senarai hujah FIELD() menentukan urutan yang anda mahukan hasilnya dipaparkan. Klausa ORDER BY mengisih keputusan berdasarkan kedudukan yang diberikan oleh FIELD().
Penjelasan:
Fungsi FIELD() memberikan kedudukan berikut kepada nilai:
Dengan menggunakan kaedah ini, anda boleh memastikan bahawa susunan keputusan dalam pertanyaan "IN" anda sepadan dengan susunan nilai yang ditentukan. Ini amat berguna dalam senario di mana anda berurusan dengan set data tersusun atau apabila anda ingin mengekalkan perhubungan tertentu antara rekod.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Susunan Nilai dalam Pertanyaan MySQL `IN`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!