Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

ERRO 1064 (42000) erro de banco de dados na sintaxe de partição por


Funções de janela (como lead() ) foram adicionados apenas no MySQL 8.0, portanto, não estão disponíveis na versão 5.7. Você pode emular lead() com uma auto-junção assim:
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
    )

Nota lateral:para que este método funcione corretamente, você precisa de registros subsequentes do mesmo id ter um timestamp diferente s - o que não é o caso dos dados de amostra que você mostrou, onde todos os timestamps são os mesmos (presumo que seja um erro de digitação nos dados de amostra).