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
Lepaskan: 2024-11-22 05:32:17
asal
610 orang telah melayarinya

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];
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan