sql >> Databasteknik >  >> RDS >> Mysql

MySQL - hitta skillnaden mellan rader i samma tabell

Här är en lösning utan variabler. Jag antar att du har dina initiala data i en tabell som heter 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

Här får vi det föregående värdet med en subselect (det maximala result). av de föregående tidsstämplarna från samma ip ). IFNULL ger oss en 0 om detta var det första värdet, så initiala resultat visas korrekt.

Jag rekommenderar också att du lägger till följande index i thetable :

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


  1. Hur anropar man Oracle MD5 hash-funktion?

  2. Det går inte att installera pg gem på Mountain Lion

  3. Skickar array till Oracle-proceduren från c#

  4. Designmönster för anpassade fält i relationsdatabasen