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

Classificação de linha em uma visualização do MySQL


Usar:
SELECT t.id,
       t.variety,
       (SELECT COUNT(*) FROM TABLE WHERE id < t.id) +1 AS NUM
  FROM TABLE t

Não é uma maneira ideal de fazer isso, porque a consulta para o valor num será executada para cada linha retornada. Uma ideia melhor seria criar um NUMBERS tabela, com uma única coluna contendo um número começando em um que aumenta para um número escandalosamente grande e, em seguida, junte e faça referência aos NUMBERS table de maneira semelhante ao exemplo de variável a seguir.

Classificação do MySQL ou a falta dela


Você pode definir uma variável para obter a funcionalidade de número de linha psuedo, porque o MySQL não possui nenhuma função de classificação:
SELECT t.id,
       t.variety,
       @rownum := @rownum + 1 AS num
  FROM TABLE t,
       (SELECT @rownum := 0) r
  • O SELECT @rownum := 0 define a variável e a define como zero.
  • O r é um alias de subconsulta/tabela, porque você receberá um erro no MySQL se não definir um alias para uma subconsulta, mesmo que não o use.

Não é possível usar uma variável em uma visualização do MySQL


Se fizer isso, você receberá o erro 1351, porque você não pode usar uma variável em uma visão devido ao design . O comportamento de bug/recurso está documentado aqui .