Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Nilai Atas n Maks daripada Jadual Pangkalan Data?
Memilih Nilai Maks Teratas daripada Jadual
Dalam pengurusan pangkalan data, mungkin perlu untuk mendapatkan semula nilai n tertinggi teratas daripada jadual. Untuk mencapai matlamat ini, terdapat beberapa pendekatan yang tersedia. Pertimbangkan jadual berikut:
column1 column2 1 foo 2 foo 3 foo 4 foo 5 bar 6 bar 7 bar 8 bar
Untuk n=2, kami ingin mendapatkan keputusan ini:
3 4 7 8
Penghampiran Menggunakan Kumpulan Maks
Pendekatan awal ialah mengira nilai maksimum bagi setiap kumpulan:
SELECT max(column1) FROM table GROUP BY column2
Walau bagaimanapun, kaedah ini hanya memberikan nilai teratas untuk setiap kumpulan, bukan nilai n teratas.
Penyelesaian Berasaskan Kesatuan
Untuk n=2, pertanyaan berasaskan kesatuan berikut boleh digunakan:
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 memilih nilai teratas dan kemudian mengecualikan pendua dengan menyertai pertanyaan kedua, yang mendapati nilai tertinggi seterusnya belum dipilih.
Simulasi Kedudukan
Untuk sebarang nilai n, pendekatan yang lebih generik ialah mensimulasikan pangkat( ) fungsi ke atas partition. Satu cara untuk melakukannya ialah:
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
Pertanyaan ini mengumpulkan nilai mengikut lajur yang diingini dan kemudian mencari nilai tertinggi seterusnya untuk setiap kumpulan dalam had yang ditentukan (dalam kes ini, 2,1 untuk n= 2).
Dengan mengikut pendekatan ini, anda boleh memilih nilai n maksimum teratas dengan berkesan daripada jadual tertentu, memastikan nilai pendua dihapuskan dan bilangan rekod yang betul dikembalikan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Atas n Maks daripada Jadual Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!