Giới thiệu
Biến người dùng (user-defined variable) trong MySQL có thể được sử dụng trong câu lệnh UPDATE để tính toán giá trị mới dựa trên trạng thái trước đó của biến. Điều này cho phép tạo ra các dãy số tăng dần, đánh số thứ tự, v.v.
Ví dụ minh họa: Cập nhật cột UserId thành dãy số tăng 10 đơn vị
Bước 1: Tạo bảng và chèn dữ liệu
CREATE TABLE DemoTable2027 (UserId INT);
INSERT INTO DemoTable2027 VALUES (10), (20), (31), (11);
Bước 2: Khởi tạo biến và cập nhật
SET @uId := 100;
UPDATE DemoTable2027
SET UserId = (@uId := @uId + 10);
Giải thích: Biến @uId bắt đầu từ 100. Với mỗi hàng được cập nhật, biểu thức (@uId := @uId + 10) gán giá trị mới cho biến và đồng thời trả về giá trị đó để gán vào cột UserId.
Bước 3: Kết quả
SELECT * FROM DemoTable2027;
+--------+
| UserId |
+--------+
| 110 |
| 120 |
| 130 |
| 140 |
+--------+
⚠️ Cảnh quan trọng: Thứ tự cập nhật các hàng trong UPDATE không được đảm bảo nếu không có ORDER BY (MySQL không hỗ trợ ORDER BY trong UPDATE nhiều bảng, nhưng đơn bảng thì được). Để đảm bảo thứ tự, hãy dùng:
UPDATE DemoTable2027
SET UserId = (@uId := @uId + 10)
ORDER BY UserId; -- hoặc cột khác xác định thứ tự