在MySQL中不常见的过滤

时间:2014-06-13 08:25:35

标签: mysql sql filtering

将一些行设置为下一个数据

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时 - 它是下一行的平均日期(按索引偏移)

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

<强>参考文献: