sql >> Database >  >> RDS >> Mysql

ERROR 1064 (42000) databasefout in syntaxis van overpartitie door

Vensterfuncties (zoals lead() ) zijn alleen toegevoegd in MySQL 8.0, dus ze zijn niet beschikbaar in versie 5.7. U kunt lead() emuleren met een self-join zoals:

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
    )

Kanttekening:om deze methode goed te laten werken, heb je opeenvolgende records van dezelfde id nodig om een ​​ander timestamp te hebben s - wat niet het geval is in de voorbeeldgegevens die u liet zien, waar alle tijdstempels hetzelfde zijn (ik neem aan dat dit een typefout is in uw voorbeeldgegevens).




  1. Beste manier om grote (UUID) als primaire sleutel van MySQL-tabel te verwerken

  2. Dynamisch alias toewijzen aan alle veldnamen in msyql-query

  3. Neem de laatste 3 uur en groepeer met 5 minuten

  4. Verbinding maken met Oracle 11-database vanuit . netto-