ホームページ > データベース > mysql チュートリアル > グループ化されたデータから上部Nレコードを効率的に抽出する方法は?

グループ化されたデータから上部Nレコードを効率的に抽出する方法は?

Barbara Streisand
リリース: 2025-01-25 10:05:09
オリジナル
264 人が閲覧しました

How to Efficiently Extract the Top N Records from Grouped Data?

グループデータの高効率抽出の上位レコード

人員、グループ化、年齢など、構造化されたデータセットがあると仮定します。

予想される結果:

目標は、各グループで最も古い2人の個人を取得することです。

既存のソリューション:

各グループの単一のトップラインを取得するための前の方法(@bohemianによって提案されたクエリに触発された) ユニオンを使用した拡張ソリューション:

この関数を拡張する1つの方法は、各グループの指定された数量の記録を取得できるように、ユニオンすべてのオペレーターを使用することです。

<code class="language-sql">select * 
from (select * from mytable order by `Group`, Age desc, Person) x
group by `Group`</code>
ログイン後にコピー
行番号の代替案を使用してください:

別の方法は、各レコードの行番号を生成し、次にこの行番号に従ってスクリーニングすることです。

結論:

<code class="language-sql">(
  select *
  from mytable 
  where `group` = 1
  order by age desc
  LIMIT 2
)
UNION ALL
(
  select *
  from mytable 
  where `group` = 2
  order by age desc
  LIMIT 2
)</code>
ログイン後にコピー

特定の要件とデータ機能に基づいて、ユニオンとライン番号のテクノロジーの両方が、グループ結果のトップレコードを取得するための効果的なソリューションを提供します。

以上がグループ化されたデータから上部Nレコードを効率的に抽出する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート