MySQL での上位 N の最大値の選択
最高値を持つ上位 N 行を取得するときの正しい動作を決定することは、特に次の場合に困難になることがあります。複数の行が同じ最大値を共有します。この記事では、上位 N 行のみを返すか、同じ値を持つ追加の行を含めるかという問題について説明します。
上位 N 行を取得するには、次のクエリを使用できます:
select * from t order by value desc limit N;
このクエリは、値列の降順に基づいて上位 N 行を取得します。ただし、複数の行が N 番目の最大値を共有する場合は、同じ値を持つ行を除いて、上位 N 行のみが返されます。
同じ最大値を持つすべての行を返す必要があるシナリオでは、次のクエリを使用できます:
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;
または、上記のクエリの簡略化したバージョンを使用できます。 used:
select * from t join (select value from t order by value limit N ) tlim on t.value = tlim.value;
これらのクエリは両方とも、上位 N 行だけでなく、同じ最大値を共有する追加の行も返します。
次のクエリは概念的には望ましい結果を達成しますが、データベース固有の制限により、MySQL と互換性がない可能性があります:
select * from t where t.value >= ANY (select value from t order by value limit N)
利用可能なさまざまな方法を理解することで、開発者は適切なクエリ ベースを選択できます。 MySQL で上位 N 個の最大値を取得する際の特定の要件について説明します。
以上がMySQL で上位 N 行を取得するときに重複する最大値を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。