Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL - znajdź różnicę między wierszami tej samej tabeli

Oto rozwiązanie bez zmiennych. Zakładam, że masz swoje dane initail w tabeli o nazwie thetable .

SELECT date, time, ip,
    result - IFNULL( (
        SELECT MAX( result ) 
        FROM thetable
        WHERE ip = t1.ip
        AND ( date < t1.date
            OR date = t1.date AND time < t1.time )
    ) , 0) AS diff
FROM thetable AS t1
ORDER BY ip, date, time

Tutaj otrzymujemy poprzednią wartość z podwyborem (maksymalny result poprzednich sygnatur czasowych z tego samego ip ). IFNULL daje nam 0, jeśli była to pierwsza wartość, więc początkowe wyniki są wyświetlane poprawnie.

Polecam również dodanie następującego indeksu do thetable :

CREATE INDEX sort1 ON thetable (ip, date, time);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ceny zmiennoprzecinkowe czy dziesiętne?

  2. Gdzie powinienem przechowywać poświadczenia mojej bazy danych?

  3. Czy instrukcja merge jest dostępna w MySQL?

  4. Kolejność usuwania z ograniczeniami klucza obcego,

  5. MySQL Query - uzyskaj rekordy na podstawie aktualnej daty