Hàm ROW_NUMBER() được hỗ trợ từ MySQL 8.0. Đây là một loại window function (hàm cửa sổ) dùng để gán số thứ tự cho các dòng.
Tạo bảng
mysql> CREATE TABLE rowNumberDemo (
-> FirstName VARCHAR(100)
-> );
Query OK, 0 rows affected (0.92 sec)
Chèn dữ liệu
mysql> INSERT INTO rowNumberDemo VALUES('john');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO rowNumberDemo VALUES('john');
Query OK, 1 row affected (0.29 sec)
mysql> INSERT INTO rowNumberDemo VALUES('Bob');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO rowNumberDemo VALUES('Smith');
Query OK, 1 row affected (0.17 sec)
Hiển thị dữ liệu
mysql> SELECT * FROM rowNumberDemo;
Kết quả:
+-----------+
| FirstName |
+-----------+
| john |
| john |
| Bob |
| Smith |
+-----------+
4 rows in set (0.00 sec)
Sử dụng ROW_NUMBER() để gán số thứ tự tăng dần:
mysql> SELECT ROW_NUMBER() OVER (ORDER BY FirstName) AS RowNumberSequence, FirstName
-> FROM rowNumberDemo ORDER BY FirstName;
Kết quả:
+-------------------+-----------+
| RowNumberSequence | FirstName |
+-------------------+-----------+
| 1 | Bob |
| 2 | john |
| 3 | john |
| 4 | Smith |
+-------------------+-----------+
4 rows in set (0.00 sec)
Mỗi bản ghi đã được gán một số thứ tự nhờ ROW_NUMBER().