Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menggabungkan Pemilihan Rawak dan Pengisihan Berdasarkan Nama dalam MySQL?

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

Susan Sarandon
Susan Sarandonasal
2024-10-26 01:48:02716semak imbas

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>

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>

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!

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