Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como gerar o número de sequência na visualização do MySQL?


Tecnicamente, você quer algo assim para simular a classificação ou um número de linha.
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  

Você não pode usar este código SQL, você receberá o erro abaixo se tentar criar uma View com uma variável de usuário.
Error Code: 1351
View's SELECT contains a variable or parameter

O código SQL abaixo também possibilita gerar o número_linha.Isso pressupõe que você tenha uma coluna id que é gerada com AUTO_INCREMENT.Mas a subconsulta é uma subconsulta correlacionada o que torna a execução muito lenta em tabelas maiores porque a contagem precisa ser executada em 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

Somente MySQL 8.0+.

O MySQL suporta funções de janela, portanto, nenhuma variável de usuário do MySQL é necessária para simular a classificação ou um número de linha.
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