首頁  >  文章  >  資料庫  >  如何在 MySQL 中依群組對行進行編號?

如何在 MySQL 中依群組對行進行編號?

Barbara Streisand
Barbara Streisand原創
2024-11-11 21:52:03392瀏覽

How to Number Rows by Group in MySQL?

在MySQL 中按群組對行進行編號

考慮以下表格結構:

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

產生結果集包含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;

解釋:

  • 查詢先初始化兩個使用者變數@ curRow 和@curType,分別追蹤目前行號和目前類型值。
  • 在主查詢中,CASE 語句檢查目前類型值是否與先前儲存的值相符@curType。如果它們匹配,則將 @curRow 遞增 1。否則,它將 @curRow 重設為 1 並使用新值更新 @curType。
  • 表達式 (@curRow := @curRow 1) 1 新增遞增的或將 @curRow 的值重設為 1 以產生行號。
  • 查詢按船員 ID 排序並鍵入以正確對行進行分組和編號。

輸出:

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

以上是如何在 MySQL 中依群組對行進行編號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn