Technicky chcete, aby něco takového simulovalo pořadí nebo číslo řádku..
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
Tento kód SQL nemůžete použít, pokud se pokusíte vytvořit pohled s uživatelskou proměnnou, zobrazí se níže uvedená chyba.
Error Code: 1351
View's SELECT contains a variable or parameter
Níže uvedený kód SQL také umožňuje vygenerovat číslo_řádku. To předpokládá, že máte sloupec id, který se generuje pomocí AUTO_INCREMENT. Poddotaz je však korelovaný poddotaz, díky čemuž je provádění u větších tabulek velmi pomalé, protože je třeba provést počítání. na každém záznamu.
CREATE VIEW table_view
AS
SELECT
*
, (SELECT COUNT(*) + 1 FROM table inner WHERE inner.id < outer.id) AS row_number
FROM
table outer
Pouze MySQL 8.0+.
MySQL podporuje funkce okna, takže k simulaci pořadí nebo čísla řádku nejsou potřeba žádné uživatelské proměnné MySQL.
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