Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jaki jest odpowiednik @row:[email protected]+1 . w php?

MySQL>8.0

To samo zadanie można osiągnąć za pomocą funkcji okna. Jeśli się nie mylę, właściwy sposób na zrobienie tego wygląda następująco:

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

Możesz emulować funkcję okna za pomocą właściwości sesji, ale nie zawsze jest to niezawodne.

Metoda 1 (można wykonać tylko raz; nie polecam):

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Spring, MySQL i Hibernate:Błąd bazy danych, jeśli system nie zostanie użyty w ciągu 8 godzin

  2. PHP MySQL greckie litery pokazujące jak ???? znaki

  3. Naprawić zserializowane dane uszkodzone z powodu edycji bazy danych MySQL w edytorze tekstu?

  4. MySQL LEFT JOIN 3 stoły

  5. Która faza maven będzie zawsze wykonywana po fazie testów?