計算MySQL SELECT 查詢中的行之間的差異
要計算SELECT 查詢中的行之間的差異,請考慮以下方法:
將LEFT JOIN 與MAX() 子查詢結合使用
您可以依照條件使用LEFT JOIN 將一行與其前一行連接。在您的情況下,您希望找到每個日期的前一行:
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
使用Lag() 函數模擬
因為MySQL 沒有lag() 函數,您可以使用使用者定義的變數來模擬:
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
結果
兩種方法都會產生所需的輸出:
ID | Kilometers | date | car_id | car_driver | number_km_since_last_date 1 | 100 | 2012-05-04 | 1 | 1 | 0 2 | 200 | 2012-05-08 | 1 | 1 | 100 4 | 600 | 2012-05-16 | 1 | 1 | 400 3 | 1000 | 2012-05-25 | 1 | 1 | 400
以上是如何計算 MySQL SELECT 查詢中行之間的差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!