ホームページ  >  記事  >  データベース  >  MySQL で上位 N 行を取得するときに重複する最大値を処理する方法は?

MySQL で上位 N 行を取得するときに重複する最大値を処理する方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-10 20:25:03826ブラウズ

How to Handle Duplicate Maximum Values When Retrieving Top N Rows in MySQL?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。