sql >> Database teknologi >  >> RDS >> Mysql

MySQL-forskel mellem to rækker i en SELECT-sætning

SELECT
    mt1.ID,
    mt1.Kilometers,
    mt1.date,
    mt1.Kilometers - IFNULL(mt2.Kilometers, 0) AS number_km_since_last_date   
FROM
    myTable mt1
    LEFT JOIN myTable mt2
        ON mt2.Date = (
            SELECT MAX(Date)
            FROM myTable mt3
            WHERE mt3.Date < mt1.Date
        )
ORDER BY mt1.date

Sql Fiddle

Eller ved at emulere en lag() funktion gennem MySql hackiness...

SET @kilo=0;

SELECT
    mt1.ID,
    mt1.Kilometers - @kilo AS number_km_since_last_date,
    @kilo := mt1.Kilometers Kilometers,
    mt1.date
FROM myTable mt1
ORDER BY mt1.date

Sql Fiddle



  1. Advarsel:mysql_query():3 er ikke en gyldig MySQL-Link-ressource

  2. Sådan staves året, når du formaterer en dato i Oracle

  3. datetime vs datetimeoffset i SQL Server:Hvad er forskellen?

  4. Sådan kontrolleres størrelsen af ​​en database i MySQL