Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Memilih Nilai Maksimum N Teratas daripada Jadual MySQL?

Bagaimana untuk Memilih Nilai Maksimum N Teratas daripada Jadual MySQL?

DDD
DDDasal
2024-11-10 01:20:02760semak imbas

How to Select the Top N Maximum Values from a MySQL Table?

Memilih Nilai n Maks Teratas daripada Jadual MySQL

Apabila berurusan dengan pangkalan data SQL, selalunya anda perlu mendapatkan nilai n maksimum teratas daripada jadual. Ini amat berguna untuk mencari kategori yang paling kerap berlaku atau produk berprestasi tinggi.

Dalam MySQL, pendekatan asas untuk memilih nilai maksimum daripada jadual adalah dengan mengumpulkan lajur dan mengenal pasti nilai tertinggi dalam setiap kumpulan. Walau bagaimanapun, untuk memilih nilai n maksimum atas, pendekatan berbeza diperlukan.

Satu kaedah untuk memilih nilai n maks teratas daripada jadual ialah menggabungkan dua pertanyaan UNION. Pertanyaan pertama mengenal pasti nilai maksimum untuk setiap kumpulan, manakala pertanyaan kedua memilih nilai tertinggi seterusnya untuk setiap kumpulan, tidak termasuk nilai maksimum yang dikenal pasti pada mulanya.

SELECT max(column1) m
FROM table t
GROUP BY column2
UNION
SELECT max(column1) m
FROM table t
WHERE column1 NOT IN (SELECT max(column1)
                      WHERE column2 = t.column2)

Pendekatan ini boleh disesuaikan untuk mendapatkan sebarang bilangan nilai maks teratas dengan melaraskan klausa LIMIT dalam pertanyaan kedua. Contohnya, untuk memilih 2 nilai maks teratas, klausa LIMIT ialah "LIMIT 2,1".

Kaedah lain untuk memilih nilai n maks teratas daripada jadual MySQL melibatkan simulasi kedudukan berbanding partition. Teknik ini melibatkan subkueri kompleks yang memberikan pangkat kepada setiap nilai dalam kumpulan. Hasilnya kemudiannya boleh ditapis untuk mendapatkan semula nilai n teratas.

Berikut ialah contoh pertanyaan yang menggunakan pendekatan ini:

SELECT t.*
FROM
   (SELECT grouper,
          (SELECT val
           FROM table li
           WHERE li.grouper = dlo.grouper
           ORDER BY
                 li.grouper, li.val DESC
           LIMIT 2,1) AS mid
   FROM
      (
      SELECT DISTINCT grouper
      FROM table
      ) dlo
   ) lo, table t
WHERE t.grouper = lo.grouper
      AND t.val > lo.mid

Teknik ini lebih kompleks sedikit tetapi boleh digunakan untuk memilih nilai n maksimum atas bagi mana-mana lajur dalam jadual.

Apabila melaksanakan salah satu daripada pendekatan ini, adalah penting untuk mempertimbangkan pengedaran data dan bilangan nilai maksimum teratas yang diperlukan. Memilih sejumlah besar nilai maks teratas boleh memberi kesan ketara kepada prestasi dalam set data yang besar.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Nilai Maksimum N Teratas daripada Jadual 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