Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cập nhật cột thêm số thứ tự tăng dần (John1, John2, John3...) trong MySQL

Cập nhật hàng loạt thêm số thứ tự tự động vào chuỗi trong MySQL

Sử dụng biến user-defined (@row) trong câu lệnh UPDATE để tạo số thứ tự tăng dần và nối chuỗi.

1. Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE DemoTable (
    StudentId VARCHAR(80)
);
mysql> INSERT INTO DemoTable VALUES ('John'), ('John'), ('John'), ('John'), ('John');

2. Xem dữ liệu ban đầu

mysql> SELECT * FROM DemoTable;
+-----------+
| StudentId |
+-----------+
| John      |
| John      |
| John      |
| John      |
| John      |
+-----------+

3. Truy vấn cập nhật: Nối số thứ tự 1,2,3,4,5

mysql> UPDATE DemoTable, (SELECT @row := 0) r
    SET StudentId = CONCAT('John', @row := @row + 1);

Kết quả: Query OK, 5 rows affected

4. Kiểm tra kết quả

mysql> SELECT * FROM DemoTable;
+-----------+
| StudentId |
+-----------+
| John1     |
| John2     |
| John3     |
| John4     |
| John5     |
+-----------+

Giải thích cơ chế:

  • (SELECT @row := 0) r: Khởi tạo biến @row = 0 (bảng dẫn xuất)
  • @row := @row + 1: Tăng @row lên 1 cho mỗi hàng, trả về giá trị mới
  • CONCAT('John', ...): Nối chuỗi 'John' với số thứ tự
  • MySQL xử lý hàng theo thứ tự tự nhiên (thường là theo PRIMARY KEY hoặc thứ tự chèn)

Lưu ý: Thứ tự cập nhật không được đảm bảo nếu không có ORDER BY. Để an toàn, dùng bảng tạm hoặc CTE (MySQL 8.0+):

WITH numbered AS (
    SELECT StudentId, ROW_NUMBER() OVER () AS rn FROM DemoTable
)
UPDATE DemoTable d
JOIN numbered n ON d.StudentId = n.StudentId
SET d.StudentId = CONCAT('John', n.rn);