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).