首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 為現有表添加自增行號:變量模擬 ROW_NUMBER 實戰

     編輯:MySQL 綜合教學

需求

現有表 datamanagement 需添加 rownum 列,按 dataid 排序為 industryid='38' 的記錄生成連續行號 1,2,3…

實現步驟

-- 1. 添加列
ALTER TABLE datamanagement ADD COLUMN rownum INT;

-- 2. 會話變量模擬 ROW_NUMBER 更新
SET @rownum = 0;
UPDATE datamanagement
SET rownum = (@rownum := @rownum + 1)
WHERE industryid = '38'
ORDER BY dataid;

原理

  • @rownum 是用戶定義變量,會話級生命周期。
  • @rownum := @rownum + 1 每行遞增並賦值給 rownum。
  • ORDER BY 保證按業務邏輯排序後再編號。

MySQL 8.0+ 原生寫法

UPDATE datamanagement
SET rownum = rn
FROM (
    SELECT id, ROW_NUMBER() OVER (ORDER BY dataid) AS rn
    FROM datamanagement
    WHERE industryid = '38'
) AS t
WHERE datamanagement.id = t.id;

窗口函數更直觀、並行安全、性能更優。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved