問題:
各グループの行番号を生成する MySQL クエリを作成するcrew_id と type などの 2 つのフィールドに基づくレコードの数。行番号は、crew_id と type の新しい組み合わせごとにリセットする必要があります。
サンプル データ:
id crew_id amount type 1 4 1000 AUB 2 4 1500 AUB 3 5 8000 CA 4 4 1000 CA 5 5 1000 AUB 6 6 3000 AUB 7 4 2000 CA 8 6 3500 AUB 9 4 5000 AUB 10 5 9000 CA 11 5 1000 CA
必要な出力:
id crew_id amount type row_number 1 4 1000 AUB 1 2 4 1500 AUB 2 9 4 5000 AUB 3 4 4 1000 CA 1 7 4 2000 CA 2 5 5 1000 AUB 1 3 5 8000 CA 1 10 5 9000 CA 2 11 5 1000 CA 3 6 6 3000 AUB 1 6 6 3000 AUB 2
解決策:
必要な行番号を達成するには、サブクエリと CASE ステートメントの組み合わせを利用できます。
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;
Inこのクエリ:
外側の SELECT クエリの CASE ステートメントは、type 列と @curType を比較して、現在の行が同じグループに属しているかどうかを判断します。
以上がMySQL でグループ内の行番号を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。