ホームページ >データベース >mysql チュートリアル >MySQL で上位 N 個の最大値を選択する方法: N 行のみを返すか、それとも同数を含めるか?

MySQL で上位 N 個の最大値を選択する方法: N 行のみを返すか、それとも同数を含めるか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-15 14:41:03560ブラウズ

How to Select the Top N Maximum Values in MySQL: Return Only N Rows or Include Ties?

MySQL: 上位 N 個の最大値の選択

特定の行で最大値を持つ上位 N 行を取得しようとすると、混乱がよく発生します。カラム。問題は、上位 N 行のみを返すか、同じ最大値を共有する場合に追加の行を含めるかどうかです。

前者を実現するには、次のクエリで十分です。

SELECT *
FROM t
ORDER BY value DESC
LIMIT N

Thisクエリでは、他の行が同じ最大値を持つかどうかに関係なく、上位 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.cutoff;

別の方法として、クエリを簡略化することもできます:

SELECT *
FROM t
JOIN (
  SELECT value
  FROM t
  ORDER BY value
  LIMIT N
) tlim
ON t.value = tlim.value;

最後に、別の方法では ANY 関数を使用しますが、MySQL との互換性は異なる場合があります:

SELECT *
FROM t
WHERE t.value >= ANY (
  SELECT value
  FROM t
  ORDER BY value
  LIMIT N
)

このアプローチには、同じ最大値を持つ行も含まれており、問題に対する概念的に明確な解決策が提供されます。

以上がMySQL で上位 N 個の最大値を選択する方法: N 行のみを返すか、それとも同数を含めるか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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