Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL - trouver la différence entre les lignes d'une même table

Voici une solution sans variables. Je suppose que vous avez vos données initiales dans une table appelée 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

Ici, nous obtenons la valeur précédente avec une sous-sélection (le result maximal des horodatages précédents du même ip ). IFNULL nous donne un 0 si c'était la première valeur, donc les premiers résultats sont affichés correctement.

Je recommande également d'ajouter l'index suivant à thetable :

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