Technicznie rzecz biorąc, potrzebujesz czegoś takiego, aby symulować ranking lub numer wiersza.
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
Nie możesz użyć tego kodu SQL, otrzymasz poniższy błąd, jeśli spróbujesz utworzyć widok ze zmienną użytkownika.
Error Code: 1351
View's SELECT contains a variable or parameter
Poniższy kod SQL umożliwia również wygenerowanie numeru wiersza. Zakłada się, że masz kolumnę identyfikatora, która jest generowana za pomocą AUTO_INCREMENT. Ale podzapytanie jest skorelowanym podzapytaniem, co powoduje, że wykonanie jest bardzo powolne w przypadku większych tabel, ponieważ zliczanie musi zostać wykonane na każdym nagraniu.
CREATE VIEW table_view
AS
SELECT
*
, (SELECT COUNT(*) + 1 FROM table inner WHERE inner.id < outer.id) AS row_number
FROM
table outer
Tylko MySQL 8.0+.
MySQL obsługuje funkcje okien, więc żadne zmienne użytkownika MySQL nie są potrzebne do symulacji rankingu lub numeru wiersza.
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