MySQL - DATEDIFF LOOKUP前一行(相同ID)

时间:2017-04-25 18:09:03

标签: mysql

我正在尝试在我的SQL上创建一个额外的列,我可以识别user_id是否生成了后续(甚至第三行)。

如果是这样,计算连接时间和上一行断开时间之间的约会。

如果没有重复的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

1 个答案:

答案 0 :(得分: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`