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 .