sql >> Databáze >  >> RDS >> Mysql

Jaký je php ekvivalent @row:[email protected]+1

MySQL>8.0

Stejného úkolu můžete dosáhnout pomocí funkce okna. Pokud se nemýlím, správný způsob, jak to udělat, by byl následující:

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

Funkci okna můžete emulovat pomocí vlastnosti session, ale to není vždy spolehlivé.

Metoda 1 (lze provést pouze jednou; nedoporučujeme):

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

Metoda 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. Tvůrce dotazů Laravel pro rekurzivní výsledky? Např. id, parent_id

  2. 6 důvodů, proč může Microsoft Access pomoci vaší firmě

  3. Snažím se porozumět Nelze najít FULLTEXT index odpovídající chybě seznamu sloupců

  4. Kompilace PHP 5.1.6 s PDO MySQL