Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL - намерете разликата между редовете на една и съща таблица

Ето решение без променливи. Предполагам, че имате началните си данни в таблица, наречена 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

Тук получаваме предишната стойност с подселекция (максималният result от предходните времеви печати от същия ip ). IFNULL ни дава 0, ако това е първата стойност, така че първоначалните резултати се показват правилно.

Също така препоръчвам да добавите следния индекс към thetable :

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL архивиране на база данни

  2. '𠂉' Не е валиден уникод символ, но в набора от символи уникод?

  3. Индексът на Varchar прави ли разлика в производителността?

  4. Какъв е най-добрият начин за реализиране на търсене на подниз в SQL?

  5. Създайте временна таблица с дати