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!