sql >> Base de Datos >  >> RDS >> Mysql

Rango de fila en una vista de MySQL

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í .