Teknisk vil du have noget som dette for at simulere rangering eller et rækkenummer.
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
Du kan ikke bruge denne SQL-kode, du vil få fejlen nedenfor, hvis du forsøger at oprette en visning med en brugervariabel.
Error Code: 1351
View's SELECT contains a variable or parameter
SQL-koden nedenfor gør det også muligt at generere rækkenummeret. Dette forudsætter, at du har en id-kolonne, hvad der genereres med AUTO_INCREMENT. Men underforespørgslen er en korreleret underforespørgsel, hvilket gør udførelsen meget langsom på større tabeller, fordi optællingen skal udføres på hver post.
CREATE VIEW table_view
AS
SELECT
*
, (SELECT COUNT(*) + 1 FROM table inner WHERE inner.id < outer.id) AS row_number
FROM
table outer
Kun MySQL 8.0+.
MySQL understøtter vinduesfunktioner, så ingen MySQL's brugervariable er nødvendige for at simulere rangering eller et rækkenummer.
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