将一些行设置为下一个数据
s1 in1 out1 t1 date1
s2 in2 out2 t2 date2
...
si ini outi ti datei
表结构是:
s1 BIGINT PK
in
out
t BIGINT
date DATETIME
其中date - 会话开始时的日期和时间 - 会话的持续时间(以秒为单位)。 我需要在这种情况下进行查询过滤:
row write to the result set if:
datei+1-datei<ti
这是因为DB表有一些损坏的行。 我可以以编程方式进行此操作。但是有可能在MySQL查询中做到这一点吗? 最有趣的是行偏移。
更新
当我说datei+1
时 - 它是下一行的平均日期(按索引偏移)
答案 0 :(得分:0)
如果我找对你。你可能会这样:
SELECT
*
FROM
(
SELECT
Table1.s1,
Table1.date,
Table1.t,
(
SELECT
MIN(tbl.s1) AS s1
FROM
Table1 AS tbl
WHERE
tbl.s1 > Table1.s1
) as NextId
FROM
Table1
) AS tblInner
JOIN Table1 AS Next
ON tblInner.NextId=Next.s1
WHERE TIMESTAMPDIFF(SECOND,Next.date,tblInner.date)<tblInner.t
<强>参考文献:强>