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

Barbara Streisand
發布: 2024-11-11 21:52:03
原創
361 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板