Mysql
 sql >> база данни >  >> RDS >> Mysql

ГРЕШКА 1064 (42000) грешка в базата данни в синтаксиса на over partition by

Функции на прозореца (като lead() ) са добавени само в MySQL 8.0, така че не са налични във версия 5.7. Можете да емулирате lead() със самостоятелно присъединяване като така:

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
    )

Странична бележка:за да работи правилно този метод, имате нужда от последващи записи на същия id да има различен timestamp s - което не е така в примерните данни, които показахте, където всички времеви отпечатъци са еднакви (предполагам, че това е правописна грешка във вашите примерни данни).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Подреждане на артикули със съвпадащи етикети по брой съвпадащи етикети

  2. Как мога да избера най-скорошния вход за всеки член?

  3. Бутонът за избор не публикува стойност в базата данни на MySQL

  4. Фатална грешка:Клас 'Swift_smtpTransport' не е намерен в

  5. вземете идентификатора на последния вмъкнат запис, без да използвате mysql_insert_id()