sql >> Database >  >> RDS >> Mysql

MySQL - zoek het verschil tussen rijen van dezelfde tabel

Hier is een oplossing zonder variabelen. Ik neem aan dat je je initail-gegevens hebt in een tabel met de naam 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

Hier krijgen we de vorige waarde met een subselect (het maximale result van de voorgaande tijdstempels van hetzelfde ip ). IFNULL geeft ons een 0 als dit de eerste waarde was, zodat de eerste resultaten correct worden weergegeven.

Ik raad ook aan om de volgende index toe te voegen aan thetable :

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


  1. Kan tabel niet afkappen omdat ernaar wordt verwezen door een FOREIGN KEY-beperking?

  2. Fout bij gebruik van aangepaste DQL-functie met Doctrine en Symfony2

  3. hoe records uit de database te verwijderen met een Ajax

  4. Hoe sorteer ik de resultaten op tijdstempel behalve één ervan?