Bagaimana untuk Menggabungkan Pemilihan Rawak dan Pengisihan Berdasarkan Nama dalam MySQL?

Susan Sarandon
Lepaskan: 2024-10-26 01:48:02
asal
715 orang telah melayarinya

How to Combine Random Selection and Name-Based Sorting in MySQL?

MySQL: Mencapai Rawak dan Isih Berasaskan Nama

Apabila bekerja dengan pangkalan data MySQL, selalunya perlu untuk mendapatkan subset data sambil memastikan susunan tertentu. Satu senario biasa ialah memilih sampel rawak rekod, seperti pengguna, dan kemudian menyusun lagi keputusan berdasarkan atribut tertentu, seperti nama.

Penyelesaian Pertanyaan Awal

Percubaan awal untuk mencapai ini adalah untuk menggunakan pertanyaan berikut:

<code class="sql">SELECT * FROM users WHERE 1 ORDER BY rand(), name ASC LIMIT 20</code>
Salin selepas log masuk

Walau bagaimanapun, pertanyaan ini mungkin tidak memberikan hasil yang dijangkakan kerana fungsi rand() mengisih keseluruhan set data secara rawak, dan pesanan ASC nama berikutnya tidak dijamin.

Penyelesaian Pertanyaan Yang Diperbaiki

Untuk mencapai rawak secara berkesan sambil memastikan pengisihan berasaskan nama, pendekatan subkueri disyorkan:

<code class="sql">SELECT * FROM
(
    SELECT * FROM users ORDER BY rand() LIMIT 20
) T1
ORDER BY name </code>
Salin selepas log masuk

Dalam pertanyaan ini, subkueri paling dalam ( SELECT * FROM users ORDER BY rand() LIMIT 20) memilih sampel rawak 20 pengguna. Klausa LIMIT 20 memastikan bahawa hanya 20 baris dikembalikan.

Pertanyaan luar kemudian menggunakan hasil subkueri sebagai inputnya, dilambangkan dengan T1. Ia menggunakan klausa ORDER BY name untuk menyusun keputusan subquery dalam susunan menaik mengikut nama. Ini secara berkesan menggabungkan kerawak pilihan awal dengan pengisihan berasaskan nama yang dikehendaki.

Dengan menggunakan pendekatan subkueri ini, anda boleh mendapatkan semula sampel rawak pengguna dan mengisih mereka mengikut abjad berdasarkan nama mereka, seperti yang dimaksudkan.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Pemilihan Rawak dan Pengisihan Berdasarkan Nama dalam MySQL?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!