Rumah > Artikel > pangkalan data > Bagaimana untuk Mensimulasikan Kedudukan dalam MySQL untuk Memilih Nilai Tertinggi n Maksimum?
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!