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

MySQL - find forskel mellem rækker i samme tabel

Her er en løsning uden variabler. Jeg antager, at du har dine initail-data i en tabel kaldet 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

Her får vi den forrige værdi med et undervalg (det maksimale result af de foregående tidsstempler fra den samme ip ). IFNULL giver os et 0, hvis dette var den første værdi, så de første resultater vises korrekt.

Jeg anbefaler også at tilføje følgende indeks til thetable :

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


  1. MONTHS_BETWEEN() Funktion i Oracle

  2. databaseforbindelse mislykkes efter oprettelse af jar-fil

  3. C# For mange forbindelser i MySQL

  4. PHP og MySQL valgfri WHERE-betingelser