Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธี Insert หมายเลขลำดับ (Sequential Number) ใน MySQL

ใช้ 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)