Técnicamente, desea algo como esto para simular una clasificación o un número de fila.
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
No puede usar este código SQL, obtendrá el siguiente error si intenta crear una vista con una variable de usuario.
Error Code: 1351
View's SELECT contains a variable or parameter
El siguiente código SQL también permite generar el número de fila. Esto supone que tiene una columna de identificación que se genera con AUTO_INCREMENT. Pero la subconsulta es una subconsulta correlacionada que hace que la ejecución sea muy lenta en tablas más grandes porque es necesario ejecutar el conteo. en cada registro.
CREATE VIEW table_view
AS
SELECT
*
, (SELECT COUNT(*) + 1 FROM table inner WHERE inner.id < outer.id) AS row_number
FROM
table outer
Solo MySQL 8.0+.
MySQL admite funciones de ventana, por lo que no se necesitan variables de usuario de MySQL para simular una clasificación o un número de fila.
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