sql >> Databáze >  >> RDS >> Mysql

MySQL - najít rozdíl mezi řádky stejné tabulky

Zde je řešení bez proměnných. Předpokládám, že máte počáteční data v tabulce s názvem 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

Zde získáme předchozí hodnotu s podvýběrem (maximální result z předchozích časových razítek ze stejného ip ). IFNULL nám dává 0, pokud to byla první hodnota, takže počáteční výsledky se zobrazí správně.

Také doporučuji přidat následující index do thetable :

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


  1. Jak používat funkci Coalesce v Oracle

  2. PostgreSQL ekvivalent paměťových tabulek MySQL?

  3. Je zobrazení rychlejší než jednoduchý dotaz?

  4. Vypněte vědeckou notaci MySQL