Sql日期选择彼此在X秒范围内的行

Ale*_*art 6 mysql time logic date

我的sql表就像(消息,创建)

我想选择彼此相距X秒的那些行.假设最后一条消息在NOW()的X秒内,然后它应该选择它.如果倒数第二条消息在距离最后一条消息的X秒内,则它也应该选择它.换句话说,每行应与下一行进行比较并进行检查.对于最后一行,应该用NOW()来检查.基本上我想要最后一段消息(即我们彼此链接的最后一组消息,假设X秒内的连续消息彼此链接)

我不知道如何为此编写SQL查询.它甚至可能吗?

非常感谢您的宝贵时间.

Lie*_*ers 7

该脚本可在SQLServer中使用。您应该能够取出select语句并在MySQL中运行它。

DECLARE @Messages TABLE (Message VARCHAR(10), Created DATETIME)
DECLARE @Interval FLOAT

-- Interval is 1 day.
SET @Interval = 1

-- These should be in result
INSERT INTO @Messages VALUES ('Message1', GetDate())    
INSERT INTO @Messages VALUES ('Message2', GetDate()-1)
-- These should not be in result
INSERT INTO @Messages VALUES ('Message3', GetDate()-3)
INSERT INTO @Messages VALUES ('Message4', GetDate()-5)

SELECT m1.Message, m1.Created
FROM @Messages m1
     INNER JOIN @Messages m2 ON m2.Created <= m1.Created + @Interval                                
                                AND m2.Created >= m1.Created
                                AND m2.Message <> m1.Message
UNION ALL SELECT m2.Message, m2.Created
FROM @Messages m1
     INNER JOIN @Messages m2 ON m2.Created <= m1.Created + @Interval                                
                                AND m2.Created >= m1.Created
                                AND m2.Message <> m1.Message
ORDER BY Created
Run Code Online (Sandbox Code Playgroud)