Memilih Nilai N Maksimum Teratas dalam MySQL
Menentukan tingkah laku yang betul apabila mendapatkan semula baris N teratas dengan nilai tertinggi boleh mencabar, terutamanya apabila berbilang baris berkongsi nilai maksimum yang sama. Artikel ini menangani persoalan sama ada untuk mengembalikan baris N teratas sahaja atau memasukkan baris tambahan dengan nilai yang sama.
Untuk mendapatkan N baris teratas yang berbeza, pertanyaan berikut boleh digunakan:
select * from t order by value desc limit N;
Pertanyaan ini mendapatkan semula N baris teratas berdasarkan tertib menurun lajur nilai. Walau bagaimanapun, jika berbilang baris berkongsi nilai maksimum N, ia hanya akan mengembalikan baris N teratas, tidak termasuk mana-mana baris dengan nilai yang sama.
Dalam senario di mana perlu untuk mengembalikan semua baris dengan nilai maksimum yang sama, pertanyaan berikut boleh digunakan:
select * from t join (select min(value) as cutoff from (select value from t order by value limit N ) tlim ) tlim on t.value >= tlim;
Sebagai alternatif, versi ringkas pertanyaan di atas boleh digunakan:
select * from t join (select value from t order by value limit N ) tlim on t.value = tlim.value;
Kedua-dua pertanyaan ini bukan sahaja mengembalikan N baris teratas tetapi juga sebarang baris tambahan yang berkongsi nilai maksimum yang sama.
Walaupun pertanyaan berikut secara konseptual mencapai hasil yang diingini, ia mungkin tidak serasi dengan MySQL kerana batasan khusus pangkalan data:
select * from t where t.value >= ANY (select value from t order by value limit N)
Dengan memahami kaedah berbeza yang tersedia, pembangun boleh memilih pertanyaan yang sesuai berdasarkan keperluan khusus mereka apabila mendapatkan nilai maksimum N teratas dalam MySQL.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai Maksimum Pendua Apabila Mendapatkan Kembali N Baris Teratas dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!