Sử dụng biến user (@bien) khởi tạo 0, tăng dần trong SELECT.
Cú pháp:
SET @counter = 0; SELECT cot, @counter := @counter + 1 AS stt FROM ten_bang;
Ví dụ:
CREATE TABLE incrementCounterDemo (Name VARCHAR(100));
INSERT INTO incrementCounterDemo VALUES ('John'), ('Carol'), ('David'), ('Mike'), ('Bob'), ('Sam');
Khởi tạo và chọn:
SET @counter = 0; SELECT Name, @counter := @counter + 1 AS IncrementingValueByOne FROM incrementCounterDemo;
Kết quả
+-------+------------------------+ | Name | IncrementingValueByOne | +-------+------------------------+ | John | 1 | | Carol | 2 | | David | 3 | | Mike | 4 | | Bob | 5 | | Sam | 6 | +-------+------------------------+
Ứng dụng: Tạo cột số thứ tự (row number) trong phiên bản MySQL cũ (trước 8.0 không có ROW_NUMBER()).
MySQL 8.0+: Nên dùng window function chuẩn ANSI:
SELECT Name, ROW_NUMBER() OVER (ORDER BY Name) AS stt FROM incrementCounterDemo;
Lưu ý: Thứ tự đánh số phụ thuộc ORDER BY (nếu có) hoặc thứ tự lưu trữ vật lý (không đảm bảo).