SQL データベースを扱う場合、多くの場合、テーブルから上位 n 個の最大値を取得する必要があります。これは、最も頻繁に発生するカテゴリや最もパフォーマンスの高い製品を見つける場合に特に役立ちます。
MySQL では、テーブルから最大値を選択する基本的なアプローチは、列をグループ化し、各列内の最大値を特定することです。グループ。ただし、上位 n 個の最大値を選択するには、別のアプローチが必要です。
テーブルから上位 n 個の最大値を選択する 1 つの方法は、2 つの UNION クエリを組み合わせることです。最初のクエリは各グループの最大値を特定し、2 番目のクエリは、最初に特定された最大値を除いて、各グループの次に高い値を選択します。
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)
このアプローチは、任意の数の値を取得するようにカスタマイズできます。 2 番目のクエリの LIMIT 句を調整して、上位の最大値を調整します。たとえば、上位 2 つの最大値を選択するには、LIMIT 句は "LIMIT 2,1" になります。
MySQL テーブルから上位 n つの最大値を選択する別の方法には、パーティション上のランクのシミュレーションが含まれます。この手法には、グループ内の各値にランクを割り当てる複雑なサブクエリが含まれます。その後、結果をフィルタリングして上位 n 個の値を取得できます。
このアプローチを使用するクエリの例を次に示します。
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
この手法は少し複雑ですが、使用できます。テーブル内の任意の列の上位 n 個の最大値を選択します。
これらのアプローチのいずれかを実装する場合、データの分布と必要な上位最大値の数を考慮することが重要です。多数の上位最大値を選択すると、大規模なデータセットのパフォーマンスに大きな影響を与える可能性があります。
以上がMySQL テーブルから上位 N 個の最大値を選択するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。