假设我们拥有来自网站的典型会话日志,其中包含Cookie和用户ID(如果他/她提供了凭据):
cookie id timestamp
af312b452c . 31-03-11 1:44 PM
af312b452c . 31-03-11 1:46 PM
af312b452c . 31-03-11 1:48 PM
af312b452c . 31-03-11 1:51 PM
af312b452c . 31-03-11 1:53 PM
af312b452c . 31-03-11 1:56 PM
af312b452c 1 31-03-11 1:58 PM
af312b452c 1 31-03-11 2:01 PM
31-03-11 1:58 PM - 用户已登录,因此我们将跟踪他/她的活动以及user_id。
我希望通过向后填充缺少的字段来丰富这些数据,以获得特定用户在网页上看到的完整信息:
cookie id timestamp
af312b452c 1 31-03-11 1:44 PM
af312b452c 1 31-03-11 1:46 PM
af312b452c 1 31-03-11 1:48 PM
af312b452c 1 31-03-11 1:51 PM
af312b452c 1 31-03-11 1:53 PM
af312b452c 1 31-03-11 1:56 PM
af312b452c 1 31-03-11 1:58 PM
af312b452c 1 31-03-11 1:58 PM
在SQL中执行此操作的最佳方式是什么?
注意:
提前谢谢大家。
答案 0 :(得分:0)
我首先要创建一个函数,它会让我获得cookie的最新登录ID,以及你记录该cookie的时间戳(psuedocode离开我的头顶,如果某些东西关闭就道歉):< / p>
CREATE FUNCTION getFutureLogin(in_cookie VARCHAR, in_timestamp DATETIME) RETURNS INT AS
BEGIN
DECLARE logged_in_id IN
SELECT logged_in_id = TOP 1 id
FROM T_NAME
WHERE cookie = in_cookie
AND timestamp > in_timestamp
AND id IS NOT NULL
ORDER BY timestamp ASC
RETURN logged_in_id
END
从那里开始,这是一个简单的更新,你可能会安排一份工作去做。
UPDATE T_NAME SET id = getFutureLogin(cookie, timestamp) WHERE id IS NULL
可能不是最直接或最快捷的方式,但它会起作用。