MySQL: 順序付けされたクエリでの行番号の生成
順序付けされたデータセットを操作するには、多くの場合、明確なランキングのために行番号を追加する必要があります。 Java などの言語でのクエリ後の処理は可能ですが、MySQL は効率的でネイティブな処理のための組み込みソリューションを提供します。
itemID
列を持つテーブルを想像してください。目的は、各 itemID
の出現をカウントすることです。基本的な SQL クエリは次のようになります:
<code class="language-sql">SELECT itemID, COUNT(*) AS ordercount FROM orders GROUP BY itemID ORDER BY ordercount DESC;</code>
このクエリはカウントを提供しますが、行番号がありません。 MySQL の @rank
変数が解決策を提供します。ランク変数を初期化し、サブクエリ内でインクリメントします。
<code class="language-sql">SET @rank = 0;</code>
拡張されたクエリは次のようになります。
<code class="language-sql">SELECT @rank:=@rank+1 AS rank, itemID, COUNT(*) AS ordercount FROM orders GROUP BY itemID ORDER BY ordercount DESC;</code>
AS rank
は、生成されたランクを新しい列に割り当てます。
最終的なランク値を取得するには (ただし、ランクはメインの結果セットに既に含まれているため、これは多くの場合不要です)、次を追加できます。
<code class="language-sql">SELECT @rank;</code>
この方法では、ソートされた MySQL クエリに行番号付けが効率的に統合され、データベース内で直接ランク付けされたデータの分析が簡素化されます。
以上がソートされた MySQL Select ステートメントに行番号を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。