これが変数のない解決策です。 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);