Mysql
 sql >> Database >  >> RDS >> Mysql

ERRORE 1064 (42000) errore del database nella sintassi di over partition by

Funzioni della finestra (come lead() ) sono stati aggiunti solo in MySQL 8.0, quindi non sono disponibili nella versione 5.7. Puoi emulare lead() con un self-join in questo modo:

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 a margine:affinché questo metodo funzioni correttamente, sono necessari record successivi dello stesso id avere un timestamp diverso s - che non è il caso dei dati di esempio che hai mostrato, dove tutti i timestamp sono gli stessi (presumo che si tratti di un errore di battitura nei dati di esempio).