Mysql
 sql >> Base de données >  >> RDS >> Mysql

ERREUR 1064 (42000) erreur de base de données dans la syntaxe de la partition par

Fonctions de fenêtre (telles que lead() ) ont été ajoutés uniquement dans MySQL 8.0, ils ne sont donc pas disponibles dans la version 5.7. Vous pouvez émuler lead() avec une auto-jointure comme ceci :

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
    )

Remarque :pour que cette méthode fonctionne correctement, vous avez besoin d'enregistrements ultérieurs du même id avoir un timestamp différent s - ce qui n'est pas le cas dans les exemples de données que vous avez montrés, où tous les horodatages sont identiques (je suppose qu'il s'agit d'une faute de frappe dans vos exemples de données).