ホームページ >データベース >mysql チュートリアル >MySQL でグループごとに行番号を生成するにはどうすればよいですか?

MySQL でグループごとに行番号を生成するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-24 00:20:10649ブラウズ

How to Generate Row Numbers per Group in MySQL?

MySQL のグループごとの行番号

データベース管理システムでは、グループ内の行番号を理解することがデータの分析と操作にとって重要です。 MySQL では、乗組員 ID やタイプなどの特定の基準に基づいて行番号を生成することが、さまざまな手法を通じて実現できます。

解決策

次の行番号を生成するには乗組員 ID とタイプの一意の組み合わせごとに、次の MySQL クエリを利用できます。

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;

この例では、 query:

  • Table1 は、データを含む元のテーブルを表します。
  • @curRow と @curType は、それぞれ 0 と空の文字列に初期化されたユーザー定義変数です。
  • CASE ステートメントは、タイプに基づいて行番号付けを処理します。型が @curType と一致する場合、行番号 (ランク) は 1 つ増加します。それ以外の場合は、@curRow を 1 にリセットし、@curType を現在の型に更新します。
  • CASE ステートメントの 1 により、行番号は 1 から始まることが保証されます。

このクエリは次の値を返します。 「rank」という名前の追加列として行番号が追加された目的の出力。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。