ใช้ Session Variable อัปเดตคอลัมน์ให้เป็นลำดับ 1,2,3... ด้วยคำสั่ง UPDATE เดียว
ไวยากรณ์
SET @seq = 0; UPDATE yourTable SET yourColumn = @seq := @seq + 1;
ตัวอย่างการใช้งาน
สร้างตาราง SequentialNumberDemo:
mysql> CREATE TABLE SequentialNumberDemo (SequentialNumber INT NOT NULL);
เพิ่มข้อมูลสุ่ม (ไม่ใช่ลำดับ):
mysql> INSERT INTO SequentialNumberDemo VALUES(100),(10),(9),(60),(50),(40);
ข้อมูลก่อน
+------------------+ | SequentialNumber | +------------------+ | 100 | | 10 | | 9 | | 60 | | 50 | | 40 | +------------------+
คำสั่งสร้างลำดับ เริ่มจาก 1
mysql> SET @sequence = 0; mysql> UPDATE SequentialNumberDemo SET SequentialNumber = @sequence := @sequence + 1;
ผลลัพธ์หลังอัปเดต
+------------------+ | SequentialNumber | +------------------+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | +------------------+
หมายเหตุ: ลำดับจะขึ้นอยู่กับลำดับการจัดเก็บข้อมูลในตาราง (Physical Order) หากต้องการลำดับเฉพาะ ให้เพิ่ม ORDER BY ใน Subquery (MySQL 8.0+ ใช้ CTE)