MySQL でグループ化されたデータの行番号を生成するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-11 12:42:03
オリジナル
857 人が閲覧しました

How to Generate Row Numbers for Grouped Data in MySQL?

MySQL でグループ化されたデータの行番号生成

特定の列でグループ化されたデータに連続した行番号を割り当てることは、効率的なデータ操作のための貴重なテクニックですそしてプレゼンテーション。このシナリオでは、crew_id 列と type 列の両方に基づいてデータ セットの行番号を生成したいと考えています。

これを実現するには、次のカスタム クエリを利用します:

SELECT    id,
          crew_id,
          amount,
          type,
          ( 
             CASE type 
             WHEN @curType 
             THEN @curRow := @curRow + 1 
             ELSE @curRow := 1 AND @curType := type END
           ) + 1 AS rank
FROM      Table1 p,
          (SELECT @curRow := 0, @curType := '') r
ORDER BY  crew_id,type asc;
ログイン後にコピー

クエリを段階的に分解します:

  1. サブクエリ: カスタム クエリは、 (SELECT @curRow := 0, @curType := '') r によって定義されたサブクエリ。これにより、2 つのユーザー定義変数 @curRow と @curType が初期化され、それぞれ 0 と空の文字列に設定されます。これらの変数は、行番号と発生した型の値を追跡します。
  2. 外部クエリ: SELECT id、crew_id などで表されるメイン クエリは、Table1 から必要なデータを取得します。テーブル。ここでの主な焦点はランク列の計算です。
  3. ネストされた CASE ステートメント: ランク計算内の CASE ステートメントは、現在の型の値が以前に検出された型 (@curType) と一致するかどうかをチェックします。 。一致する場合、@curRow を 1 ずつ増分し、増分した値をランクに割り当てます。ただし、タイプが異なる場合は、@curRow を 1 にリセットし、@curType を現在のタイプ値に更新します。これにより、crew_id と type で定義された各グループ内の正確な行番号が保証されます。
  4. ORDER BY Clause: 最終結果は、crew_id と type に基づいて昇順で並べ替えられます。これは、適切な行を得るために重要です。各グループ内の番号の割り当て。

この包括的なクエリに従うことで、複数の列で定義されたデータ グループの行番号を効率的に生成できます。 MySQL でのデータ操作とプレゼンテーション タスクのための多用途のソリューションを提供します。

以上がMySQL でグループ化されたデータの行番号を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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