首頁  >  文章  >  資料庫  >  如何計算 MySQL 表中行之間的公里差?

如何計算 MySQL 表中行之間的公里差?

DDD
DDD原創
2024-11-08 20:03:02557瀏覽

How to Calculate Kilometer Differences Between Rows in a MySQL Table?

計算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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn