我要求在两次登录用户之间获取所有记录。
当我们检索第一次登录的行并获得第一个时间戳(t1)时,我们希望获得用户在此时间戳和第二个时间戳(t2)之间所做的所有点击。
我正在做的是:获取第一个时间戳(t1)并用用户的第二个时间戳(t2)减去它。然后我将区别(t2-t1)与第一个时间戳相加并运行查询以获得t1和(t1 + d)之间的所有命中。
first timestamp (t1) is: 1507559316
SELECT
id, timestamp, (timestamp - 1507559316) as Difference
FROM
login_activity l
WHERE
l.uid=445 AND timestamp > 1507559316
ORDER BY
timestamp
LIMIT 1
t1 = 1507559316
difference = 1226
SELECT
name, address, time
FROM
records r
WHERE
time BETWEEN FROM_UNIXTIME(1507559316) AND FROM_UNIXTIME(1507559316 + 1226)
ORDER BY
time
你认为这是解决这个问题的正确方法吗?
答案 0 :(得分:1)
除非我认真地误解了某些内容,否则你的方法会不必要地复杂化。您似乎有A
和B
,然后通过B
重新计算A + (B - A)
。这很神秘。
假设您的第一个时间戳位于t1
,您可以将第一个查询简化为
SELECT
id, timestamp AS t2
FROM
login_activity l
WHERE
l.uid=445 AND t2 > t1
ORDER BY
timestamp
LIMIT 1
和你的第二个查询
SELECT
name, address, time
FROM
records r
WHERE
time BETWEEN FROM_UNIXTIME(t1) AND FROM_UNIXTIME(t2)
ORDER BY
time
无需将t2
重新计算为t1 + (t2 - t1)
,因此无需首先计算差异。