如何在MySQL中获取具有时间限制的数据

时间:2019-04-11 08:28:21

标签: mysql sql r datetime

我在MySql中提到的表下方。

ID       UniqueId     Date
T-1      AT-1         2018-04-03 15:16:48
T-2      AT-1         2018-04-10 18:21:24
T-3      AT-1         2018-04-22 13:05:16
T-4      AT-2         2018-05-05 17:12:04
T-5      AT-2         2018-05-15 05:03:01
T-6      AT-2         2018-05-25 06:09:23
T-7      AT-3         2018-06-01 06:09:23
T-8      AT-3         2018-06-25 06:09:23
T-9      AT-3         2018-07-01 06:09:23

我只想获取那些基于ID的最新UniqueId基础大于或等于10天的记录。

例如,ID T3是日期ID UniqueId的最新AT-2,而即时ID T2之间的差是12天。 / p>

此外,如果R可行,也可以:)

预期输出:

ID       UniqueId     Date                  Difference
T-3      AT-1         2018-04-22 13:05:16   12
T-6      AT-2         2018-05-25 06:09:23   10

2 个答案:

答案 0 :(得分:1)

此查询将为您提供所需的结果。首先JOIN将表移至每个MAX(Date)的{​​{1}}的派生表,然后使用UniqueId值为最新的{{1 }}小于最大值。最后,Date子句会滤除至少10天后的日期:

Date

输出:

WHERE

Demo on dbfiddle

答案 1 :(得分:1)

您可以使用EXISTS来检查条件:

SELECT *
FROM t
WHERE NOT EXISTS (
    -- no newer row exists
    SELECT 1
    FROM t AS n
    WHERE n.UniqueId = t.UniqueId
    AND n.Date > t.Date
) AND NOT EXISTS (
    -- no older row exists that has difference of less than 10 days
    SELECT 1
    FROM t AS o
    WHERE o.UniqueId = t.UniqueId
    AND o.Date < t.Date
    AND o.Date >= t.Date - INTERVAL 10 DAY
)