ホームページ >データベース >mysql チュートリアル >グループ化されたデータから上部Nレコードを効率的に抽出する方法は?
グループデータの高効率抽出の上位レコード
人員、グループ化、年齢など、構造化されたデータセットがあると仮定します。
予想される結果:
目標は、各グループで最も古い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 サイトの他の関連記事を参照してください。