sql >> Database >  >> RDS >> Mysql

Wat is het php-equivalent van @row:[email protected]+1

MySQL>8.0

U kunt dezelfde taak bereiken met behulp van een vensterfunctie. Als ik me niet vergis, is de juiste manier om het te doen als volgt:

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

U kunt de vensterfunctie emuleren met de sessie-eigenschap, maar dit is niet altijd betrouwbaar.

Methode 1 (kan maar één keer worden uitgevoerd; niet aanbevelen):

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

Methode 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




  1. MYSQL-toegangscontrole

  2. Hoe maak je een ID aan met AUTO_INCREMENT op Oracle?

  3. Mysql-server op MAMP start niet

  4. Kleur en lettertypen wijzigen in SQL Server Management Studio (SSMS) - SQL Server / TSQL-zelfstudie, deel 12