Rumah > pangkalan data > tutorial mysql > Bagaimanakah Anda Boleh Mengawal Susunan Keputusan dalam Fungsi MySQL IN()?

Bagaimanakah Anda Boleh Mengawal Susunan Keputusan dalam Fungsi MySQL IN()?

DDD
Lepaskan: 2024-11-13 01:52:02
asal
194 orang telah melayarinya

How Can You Control the Order of Results in a MySQL IN() Function?

Pemesanan MySQL dalam Fungsi IN()

Apabila melaksanakan pertanyaan dengan klausa IN(), adalah wajar untuk mengisih memulangkan item berdasarkan pesanan yang disediakan dalam fungsi tersebut. Secara lalai, MySQL tidak menjamin pesanan ini.

Pertimbangkan contoh berikut:

SELECT id, name FROM mytable WHERE name IN ('B', 'A', 'D', 'E', 'C');
Salin selepas log masuk

Output yang dijangkakan mungkin diisih mengikut susunan nilai dimasukkan ke dalam fungsi IN():

id name
5 B
6 B
1 D
15 E
17 E
9 C
18 C

Sebaliknya, MySQL mungkin menggunakan algoritma pengisihannya sendiri, yang boleh menghasilkan pesanan.

Penyelesaian:

Untuk memastikan susunan yang dikehendaki, MySQL menyediakan fungsi FIELD(). Fungsi ini mengambil rentetan dan satu siri rentetan dan mengembalikan kedudukan rentetan pertama dalam argumen seterusnya.

Dengan menggunakan FIELD(), anda boleh mengisih output seperti berikut:

SELECT id, name
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY FIELD(name, 'B', 'A', 'D', 'E', 'C')
Salin selepas log masuk

Pertanyaan ini memastikan bahawa baris dikembalikan dalam susunan yang dinyatakan dalam IN() fungsi.

Pengoptimuman Prestasi:

Walaupun fungsi FIELD() memenuhi fungsi yang diingini, adalah penting untuk mempertimbangkan implikasi prestasi. Untuk set data yang besar, menggunakan lajur diindeks yang direka khusus untuk pengisihan boleh meningkatkan prestasi dengan ketara.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mengawal Susunan Keputusan dalam Fungsi MySQL IN()?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan