Usar:
SELECT t.id,
t.variety,
(SELECT COUNT(*) FROM TABLE WHERE id < t.id) +1 AS NUM
FROM TABLE t
No es una forma ideal de hacer esto, porque la consulta del valor numérico se ejecutará para cada fila devuelta. Una mejor idea sería crear un NUMBERS
tabla, con una sola columna que contiene un número que comienza en uno que se incrementa a un número escandalosamente grande, y luego se une y hace referencia a los NUMBERS
tabla de manera similar al ejemplo de variable que sigue.
Clasificación de MySQL, o falta de ella
Puede definir una variable para obtener la función de número de fila psuedo, porque MySQL no tiene ninguna función de clasificación:
SELECT t.id,
t.variety,
@rownum := @rownum + 1 AS num
FROM TABLE t,
(SELECT @rownum := 0) r
- El
SELECT @rownum := 0
define la variable y la establece en cero. - El
r
es un alias de subconsulta/tabla, porque obtendrá un error en MySQL si no define un alias para una subconsulta, incluso si no lo usa.
No se puede usar una variable en una vista de MySQL
Si lo hace, obtendrá el error 1351, porque no puede usar una variable en una vista debido al diseño . El error/comportamiento de características se documenta aquí .