Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tương đương với php của @row:[email bảo vệ] +1 là gì

MySQL> 8.0

Bạn có thể đạt được cùng một nhiệm vụ bằng cách sử dụng một chức năng cửa sổ. Nếu tôi không nhầm thì cách làm đúng sẽ như sau:

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

Bạn có thể mô phỏng hàm cửa sổ bằng thuộc tính phiên, nhưng điều này không phải lúc nào cũng đáng tin cậy.

Phương pháp 1 (chỉ có thể được thực hiện một lần; không khuyến khích):

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

Phương pháp 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. Mysql:Lỗi chung:1366 Giá trị chuỗi không chính xác

  2. Làm cách nào để kết nối với Cơ sở dữ liệu MySQL bằng Python?

  3. Cách thực hiện các thủ tục được lưu trữ với Doctrine2 và MySQL

  4. Tối ưu hóa MYSQL LEFT JOIN với CASE

  5. Sử dụng dấu nền xung quanh tên trường