Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quel est l'équivalent php de @row :[email protected]+1

MySQL >8.0

Vous pouvez réaliser la même tâche en utilisant une fonction de fenêtre. Si je ne me trompe pas, la bonne façon de procéder serait la suivante :

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

Vous pouvez émuler la fonction de fenêtre en utilisant la propriété de session, mais ce n'est pas toujours fiable.

Méthode 1 (ne peut être exécutée qu'une seule fois ; déconseillée) :

SELECT t.*
FROM
    (SELECT *, @position:=((SELECT ifnull(@position, 0)) + 1) AS rn FROM location_values) t
WHERE t.rn % 10 = 1

Méthode 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