例如,如果我在mysql表中有id和timestamp。它包含几个记录。如何在php中查找并存储每一行插入时间差,即比较第2行和第1行的插入时间以及存储结果,将第3行与第2行进行比较并存储结果.......
我有消息名称的表,字段是
id int(11),
timestamp int(11),
body_xml text,
chatname text
此表包含聊天信息,我需要查找总聊天时间,不需要。对于使用id的特定用户可用的对话。所以我想找到每一行的时间差,如果时差超过10分钟,则考虑作为新的对话。
我的任务是查找有关特定用户的总聊天时间,而不是。在skype中为该用户提供的对话。
现在我将所有聊天信息存储到mysql表中。
------------------------------------------------------------------------------------------- id timestamp message name ------------------------------------------------------------------------------------------- 1 2012-10-11 11:18:34 hi ram 2 2012-10-11 11:19:14 hw r u ram 3 2012-10-11 11:20:55 fine ram 4 2012-10-11 11:55:03 r u there ram 5 2012-10-11 11:56:21 yes ram 6 2012-10-11 11:57:33 then ram
在上面的表中,id 1到3的时差小于10分钟,但id 4与id 3的时差超过10分钟,所以这里它将被视为新的会话,存储id 1到3的总时间进入可变和最高时间4到6的相同可变数,这里的总对话是2。
我需要输出为 对流总数2 总时间为xx:xx
我试过这段代码
SELECT A.id, A.timestamp, (B.timestamp - A.timestamp) AS timedifference FROM time_diff A CROSS JOIN time_diff B WHERE B.id IN (SELECT MIN (C.id) FROM time_diff C WHERE C.id > A.timestamp) ORDER BY A.id ASC
我得到了空结果
答案 0 :(得分:1)
好的,以下是步骤:
ALTER TABLE
mysql,如果你必须为时差添加一行id
列加入自己的表格,但一边是id+1
。如果ID不是直接序列,您可以这样做:select r1.*
, (select max(
timestamp ) from yourTable r2 where r1.id > r2.id)
from yourTable r1
SELECT
语句。SELECT
语句转换为UPDATE
语句。