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

Thêm cột số thứ tự (row number) vào kết quả SELECT trong MySQL

MySQL 8.0+ hỗ trợ hàm cửa sổ ROW_NUMBER() OVER() để tạo số thứ tự hàng trong kết quả truy vấn.

Ví dụ minh họa

Tạo bảng:

mysql> CREATE TABLE DemoTable1342 (Score INT);

Chèn dữ liệu:

mysql> INSERT INTO DemoTable1342 VALUES(80), (98), (78), (89);

Xem dữ liệu:

mysql> SELECT * FROM DemoTable1342;
+-------+
| Score |
+-------+
| 80    |
| 98    |
| 78    |
| 89    |
+-------+

Thêm cột Rank (số thứ tự) sắp xếp Score giảm dần:

mysql> SELECT Score, ROW_NUMBER() OVER(ORDER BY Score DESC) AS `Rank` FROM DemoTable1342;

Kết quả:

+-------+------+
| Score | Rank |
+-------+------+
| 98    | 1    |
| 89    | 2    |
| 80    | 3    |
| 78    | 4    |
+-------+------+

Các hàm cửa sổ liên quan:

  • ROW_NUMBER(): 1, 2, 3... (duy nhất).
  • RANK(): 1, 2, 2, 4... (bỏ số khi trùng).
  • DENSE_RANK(): 1, 2, 2, 3... (không bỏ số).

MySQL < 8.0: Dùng biến session: SET @rownum = 0; SELECT @rownum := @rownum + 1 AS rank, ... ORDER BY Score DESC;.