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

FEJL 1064 (42000) databasefejl i syntaks for overpartition af

Vinduesfunktioner (såsom lead() ) blev kun tilføjet i MySQL 8.0, så de er ikke tilgængelige i version 5.7. Du kan efterligne lead() med en selvtilslutning som sådan:

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
    )

Sidebemærkning:for at denne metode skal fungere korrekt, har du brug for efterfølgende registreringer af det samme id at have et andet timestamp s - hvilket ikke er tilfældet i de eksempeldata, du viste, hvor alle tidsstempler er de samme (jeg antager, at dette er en tastefejl i dine eksempeldata).




  1. MYSQL - Sorter efter id i DESC rækkefølge, gruppe efter X

  2. Hvordan TIMESTAMP() virker i MariaDB

  3. Hvordan repræsenterer man mange lignende attributter for en enhed i en database?

  4. Ingen MySQL-poster vender tilbage, når en vis grænse er overskredet?