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

Qual é o equivalente php de @row:[email protected]+1

MySQL>8.0


Você pode realizar a mesma tarefa usando uma função de janela. Se não me engano a forma correta de fazer seria a seguinte:
SELECT t.* FROM (SELECT *, Row_number() OVER() AS rn FROM location_values) t 
WHERE t.rn % 10 = 1

https://www.db-fiddle.com/f/tb2nLZ6dkDPaQxkc6My9Yg/2

MySQL <8.0


Você pode emular a função de janela usando a propriedade de sessão, mas isso nem sempre é confiável.

Método 1 (só pode ser executado uma vez; não recomendo):
SELECT t.*
FROM
    (SELECT *, @position:=((SELECT ifnull(@position, 0)) + 1) AS rn FROM location_values) t
WHERE t.rn % 10 = 1

Método 2:
SELECT location_values.*
FROM location_values,
    (SELECT @row_number:=0) AS temp
WHERE (@row_number:[email protected]_number + 1) % 10 = 1

https://www.db-fiddle.com/f/tb2nLZ6dkDPaQxkc6My9Yg/3