計算MySQL SELECT 語句中行之間的差異
在這種情況下,您有一個MySQL 表,其中包含公里日期、和汽車訊息,但可能並不總是按時間順序排列。您的目標是建立一個視圖,其中包含一個附加列,顯示每輛車自上次日期以來的公里數。
要實現此目的,您不能依賴 ID 列上的簡單 JOIN,因為資料是不按時間順序排序。相反,您需要使用 LEFT JOIN 和子查詢來確定每行當前日期之前的最大日期。
使用LEFT JOIN 和子查詢
以下查詢使用LEFT JOIN 將當前表行(mt1) 與具有最大日期的行(mt2) 連接起來早於mt1 的日期:
此查詢計算目前行(mt1) 的公里數與最大日期早於目前日期(mt2) 的行的公里數之間的差值。如果 mt2 為 NULL,則表示沒有前一行,因此差值為 0。
使用MySQL Hackery 的替代方法
作為替代方法,您可以使用MySQL hack 來模擬lag() 函數,MySQL 本身不支援該函數:
此查詢使用使用者定義的變數(@kilo) 用於追蹤先前的公里值。當前公里值與 @kilo 之間的差異為您提供自上次日期以來的公里數。每行處理完畢後,@kilo 變數都會更新為目前公里值。
以上是如何計算 MySQL 表中行之間的公里差?的詳細內容。更多資訊請關注PHP中文網其他相關文章!