Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memesan Keputusan Pertanyaan MySQL mengikut Urutan Tersuai Menggunakan IN() dan FIELD()?

Bagaimanakah Saya Boleh Memesan Keputusan Pertanyaan MySQL mengikut Urutan Tersuai Menggunakan IN() dan FIELD()?

Linda Hamilton
Linda Hamiltonasal
2024-11-22 05:32:17613semak imbas

How Can I Order MySQL Query Results by a Custom Sequence Using IN() and FIELD()?

Pengoptimuman Pertanyaan MySQL menggunakan FIELD() untuk Isih Tersuai dengan IN()

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn