首頁 >資料庫 >mysql教程 >如何在 MySQL 中產生群組內的行號?

如何在 MySQL 中產生群組內的行號?

DDD
DDD原創
2024-11-11 17:45:021007瀏覽

How to Generate Row Numbers Within Groups in MySQL?

MySQL 中群組內的行號

問題:

產生一個MySQL 查詢為每個群組產生行號基於兩個欄位的記錄,例如crew_id 和type。應針對船員 ID 和類型的每個新組合重置行號。

範例資料:

所需輸出:

解決方案:

為了得到所需的行數,我們可以利用子查詢和CASE 語句的組合:

In此查詢:

  • 子查詢(SELECT @curRow := 0, @curType := '') r 初始化兩個使用者定義的變數:@curRow 為0,@curType 為空字串。
  • 外部 SELECT 查詢中的 CASE 語句將 type 欄位與 @curType 進行比較,以確定目前行是否屬於同一組。

    • 如果 type 等於 @curType, @curRow 增加 1。
    • 如果類型與 @curType 不同,則 @curRow 重設為 1,@curType 更新為目前類型值。
  • 然後將計算出的值與 1 相加,得到行號。
  • 結果集依船員_id 排序,並依類型升序排列。

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

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