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

ERROR 1064 (42000) lỗi cơ sở dữ liệu trong cú pháp của quá phân vùng bởi

Các hàm cửa sổ (chẳng hạn như lead() ) chỉ được thêm vào MySQL 8.0, vì vậy chúng không có sẵn trong phiên bản 5.7. Bạn có thể mô phỏng lead() với một tự tham gia như vậy:

select t.*, tlead.state, tlead.timestamp
from FinalTable t
left join FinalTable tlead 
    on tlead .id = t.id
    and tlead.timestamp = (
        select min(t1.timestamp) 
        from FinalTable t1 
        where t1.id = t.id and t1.timestamp > t.timestamp
    )

Lưu ý bên cạnh:để phương pháp này hoạt động bình thường, bạn cần các bản ghi tiếp theo của cùng một id để có timestamp khác nhau s - trường hợp này không xảy ra trong dữ liệu mẫu mà bạn đã hiển thị, trong đó tất cả các dấu thời gian đều giống nhau (tôi cho rằng đây là lỗi đánh máy trong dữ liệu mẫu của bạn).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khởi động lại giao dịch trong MySQL sau khi bế tắc

  2. Lỗi khi tạo hàm được lưu trữ trong MySQL LỖI 1064 &1327

  3. PDO ::truy vấn so với PDOStatement ::thực thi (PHP và MySQL)

  4. mariadb Regexp đôi khi trả về trống trong thủ tục được lưu trữ

  5. last_insert_id () so với SELECT Max (ID)