sql >> Databasteknik >  >> RDS >> Mysql

Vad är php-motsvarigheten till @row:[email protected]+1

MySQL>8.0

Du kan utföra samma uppgift med en fönsterfunktion. Om jag inte har fel är det korrekta sättet att göra det som följer:

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

Du kan emulera fönsterfunktionen med hjälp av sessionsegenskapen, men det är inte alltid tillförlitligt.

Metod 1 (kan bara köras en gång; rekommenderar inte):

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

Metod 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. Ant uppgift att kontrollera om en databas (anslutning) finns?

  2. Django - Fulltextsökning - Wildcard

  3. Hur lägger man en sträng till ett kolumnvärde i MySQL?

  4. Vad är skillnaden mellan C och Posix lokaler på Postgres?