Bagaimana untuk Memilih Subset Rawak dan Kemudian Susun oleh Lajur Lain dalam MySQL?

Linda Hamilton
Lepaskan: 2024-10-26 06:04:31
asal
679 orang telah melayarinya

 How to Select a Random Subset and Then Order by Another Column in MySQL?

Pemilihan dan Susunan Rawak dalam MySQL

Apabila membuat pertanyaan pangkalan data MySQL, adalah perkara biasa untuk memilih subset rekod secara rawak. Klausa ORDER BY RAND() boleh digunakan untuk mencapai ini. Walau bagaimanapun, adalah penting untuk mempertimbangkan susunan operasi apabila menggabungkan klausa ini dengan klausa pesanan lain.

Satu perangkap biasa berlaku apabila cuba memilih subset rawak rekod dan kemudian mengisih set yang terhasil mengikut lajur lain. Pertanyaan berikut ialah contoh ini:

SELECT * FROM users WHERE 1 ORDER BY RAND(), name ASC LIMIT 20
Salin selepas log masuk

Tujuan pertanyaan ini adalah untuk memilih 20 pengguna rawak daripada jadual pengguna dan kemudian menyusun mereka dalam tertib menaik mengikut lajur nama mereka. Walau bagaimanapun, pertanyaan ini tidak akan menghasilkan hasil yang diingini.

Sebabnya ialah klausa ORDER BY RAND() memperkenalkan susunan bukan deterministik. Ini bermakna susunan keputusan akan berubah setiap kali pertanyaan dilaksanakan. Akibatnya, klausa ASC nama berikutnya tidak boleh digunakan untuk memesan keputusan dengan pasti.

Untuk menyusun keputusan dengan betul, kita perlu menggunakan subkueri. Pertanyaan berikut akan memilih 20 pengguna rawak dan kemudian memesannya mengikut lajur nama mereka:

SELECT * FROM 
(
    SELECT * FROM users ORDER BY RAND() LIMIT 20
) T1
ORDER BY name 
Salin selepas log masuk

Pertanyaan dalaman memilih 20 pengguna secara rawak dan menyimpan hasilnya dalam jadual sementara T1. Pertanyaan luar kemudian memilih semua baris daripada T1 dan menyusunnya mengikut nama.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Subset Rawak dan Kemudian Susun oleh Lajur Lain 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!