Về mặt kỹ thuật, bạn muốn một cái gì đó như thế này để mô phỏng xếp hạng hoặc số hàng ..
CREATE VIEW table_view
AS
SELECT
*
, (@row_number := @row_number + 1) AS row_number
FROM
table
# Because a SQL table is a unsorted set off data ORDER BY is needed to get stabile ordered results.
ORDER BY
table.column ASC
CROSS JOIN (SELECT @row_number := 0) AS init_user_var
Bạn không thể sử dụng mã SQL này, bạn sẽ gặp lỗi bên dưới nếu bạn cố gắng tạo Chế độ xem với biến người dùng.
Error Code: 1351
View's SELECT contains a variable or parameter
Mã SQL bên dưới cũng giúp bạn có thể tạo ra row_number, điều này giả sử rằng bạn có một cột id được tạo bằng AUTO_INCREMENT. trên mọi bản ghi.
CREATE VIEW table_view
AS
SELECT
*
, (SELECT COUNT(*) + 1 FROM table inner WHERE inner.id < outer.id) AS row_number
FROM
table outer
Chỉ MySQL 8.0+.
MySQL hỗ trợ các hàm cửa sổ nên không cần biến người dùng của MySQL để mô phỏng xếp hạng hoặc số hàng.
CREATE VIEW table_view
AS
SELECT
*
# Because a SQL table is a unsorted set off data ORDER BY is needed to get stabile ordered results.
, (ROW_NUMBER() OVER (ORDER BY table.column ASC)) AS row_number
FROM
table