Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mensimulasikan Kedudukan dalam MySQL untuk Memilih Nilai Tertinggi n Maksimum?

Bagaimana untuk Mensimulasikan Kedudukan dalam MySQL untuk Memilih Nilai Tertinggi n Maksimum?

Patricia Arquette
Patricia Arquetteasal
2024-11-10 15:40:03775semak imbas

How to Simulate Rank in MySQL to Select Top n Maximum Values?

Mensimulasikan Kedudukan dengan MySQL untuk Memilih Nilai Tertinggi n Maksimum

Memilih nilai n maksimum teratas daripada jadual boleh mencabar dalam MySQL, terutamanya apabila n yang diingini adalah lebih besar daripada bilangan kumpulan berbeza dalam jadual.

Menganggarkan Nilai n Maks Teratas Menggunakan Pertanyaan Kesatuan

Untuk n=2, kita boleh anggaran output yang dikehendaki menggunakan pertanyaan kesatuan:

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)

Pertanyaan ini mula-mula mencari nilai maksimum untuk setiap kumpulan dan kemudian mencari nilai maksimum kedua bagi semua nilai yang belum lagi menjadi nilai maksimum bagi mana-mana kumpulan.

Menggunakan Simulasi Kedudukan

Untuk sebarang n, kita boleh mensimulasikan kedudukan atas partition menggunakan teknik yang diterangkan di tempat lain. Satu pendekatan sedemikian ialah menggunakan subkueri yang mengembalikan nilai maksimum ke-n untuk setiap kumpulan:

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

Dalam pertanyaan ini, LIMIT 2,1 menetapkan nilai n kepada 2. Gantikan kerapu dengan lajur pengelompokan nama dan val dengan nama lajur nilai dalam senario khusus anda.

Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan Kedudukan dalam MySQL untuk Memilih Nilai Tertinggi n Maksimum?. 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