Rumah > pangkalan data > tutorial mysql > Bagaimana Mengeluarkan Rekod N Teratas dengan Cekap daripada Data Dikumpulkan?

Bagaimana Mengeluarkan Rekod N Teratas dengan Cekap daripada Data Dikumpulkan?

Barbara Streisand
Lepaskan: 2025-01-25 10:05:09
asal
264 orang telah melayarinya

How to Efficiently Extract the Top N Records from Grouped Data?

Rekod teratas dalam pengekstrakan kecekapan tinggi data kumpulan

Anggapkan bahawa terdapat set data berstruktur, termasuk kakitangan, kumpulan, dan umur.

Hasil yang diharapkan:

Matlamatnya adalah untuk mengambil dua individu tertua dalam setiap kumpulan.

Penyelesaian yang sedia ada:

Kaedah sebelumnya (diilhamkan oleh pertanyaan yang dicadangkan oleh @Bohemian) untuk mengambil satu baris atas untuk setiap kumpulan:

penyelesaian yang dipertingkatkan menggunakan kesatuan:

<code class="language-sql">select * 
from (select * from mytable order by `Group`, Age desc, Person) x
group by `Group`</code>
Salin selepas log masuk
Satu cara untuk memperluaskan fungsi ini adalah dengan menggunakan kesatuan semua pengendali, supaya rekod kuantiti yang ditentukan untuk setiap kumpulan dapat diambil:

Gunakan alternatif nombor baris:

Kaedah lain adalah untuk menghasilkan nombor baris untuk setiap rekod, dan kemudian skrin mengikut nombor baris ini:
<code class="language-sql">(
  select *
  from mytable 
  where `group` = 1
  order by age desc
  LIMIT 2
)
UNION ALL
(
  select *
  from mytable 
  where `group` = 2
  order by age desc
  LIMIT 2
)</code>
Salin selepas log masuk

Kesimpulan:

Berdasarkan keperluan khusus dan ciri data, kedua -dua teknologi kesatuan dan baris memberikan penyelesaian yang berkesan untuk mendapatkan rekod teratas dalam hasil kumpulan.

Atas ialah kandungan terperinci Bagaimana Mengeluarkan Rekod N Teratas dengan Cekap daripada Data Dikumpulkan?. 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