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

Tăng biến đếm (increment counter) trong SELECT MySQL?

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).