Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Memilih Subset Rawak dan Isih mengikut Medan Tertentu dalam MySQL?

Bagaimana untuk Memilih Subset Rawak dan Isih mengikut Medan Tertentu dalam MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-10-27 06:56:29460semak imbas

How to Select a Random Subset and Sort by a Specific Field in MySQL?

Memastikan Rawak dengan MySQL ORDER BY

Apabila mengendalikan set data yang besar, selalunya perlu untuk mengekstrak subset rawak rekod dan kemudian menyusunnya berdasarkan kriteria tertentu. Klausa ORDER BY MySQL menyediakan fungsi untuk mencapai ini.

Mari kita pertimbangkan senario di mana kita mempunyai pengguna jadual pangkalan data dengan 1000 rekod. Untuk memilih 20 pengguna rawak dan memesan keputusan mengikut nama mereka dalam tertib menaik, kami mungkin pada mulanya menggunakan pertanyaan ini:

SELECT * FROM users WHERE 1 ORDER BY rand(), name ASC LIMIT 20

Walau bagaimanapun, pertanyaan ini tidak menjamin hasil yang benar-benar rawak. Bahagian ORDER BY rand() mengocok rekod, tetapi syarat WHERE 1 pada dasarnya membatalkan kerawak dengan memilih semua rekod.

Untuk mencapai gelagat yang diingini, kami menggunakan subkueri untuk mengasingkan proses pemilihan rawak:

SELECT * FROM
(
    SELECT * FROM users ORDER BY rand() LIMIT 20
) T1
ORDER BY name

Pertanyaan dalam memilih 20 pengguna rawak menggunakan ORDER BY rand() dan LIMIT 20. Pertanyaan luar kemudiannya menggunakan klausa ORDER BY name untuk menyusun pengguna yang dipilih dalam susunan abjad. Pendekatan ini menghasilkan subset rawak rekod yang kemudiannya diisih mengikut medan yang diingini, memberikan hasil yang diinginkan.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Subset Rawak dan Isih mengikut Medan Tertentu dalam MySQL?. 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