2017-04-25 78 views
0

我想創建一個額外的列在我的SQL,我可以確定如果user_id生成後續(甚至第三)行。MySQL - DATEDIFF LOOKUP前一行(相同的ID)

如果是這樣,請計算連接時間和上一行斷開時間之間的datediff。

如果沒有重複的user_id,則響應應爲NULL。

這是我的資料和筆記的截圖:

image

我試過DATEDIFF公式,但沒有成功。

有人可以幫助我嗎?我真的很感激任何輸入。

SELECT id, 
user_id, 
connected_at, 
disconnected_at, 

IFNULL(DateDiff('second', Lookup(disconnected_at), -1), connected_at) 

FROM data 
ORDER BY id, user_id, connected_at 
+0

見http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be- A-極簡單的SQL查詢 – Strawberry

回答

0

當比較不同行中的值時,需要將表連接到自身以獲取第二行。試試這個:

SELECT 
    a.id, 
    a.user_id, 
    a.connected_at, 
    a.disconnected_at, 
    DateDiff('second',b.`connected_at`,a.`disconnected_at`) as `time_diff` 
FROM `data` a 
JOIN `data` b 
ON a.`user_id` = b.`user_id` AND b.`connected_at` > a.`disconnected_at`