我的sql表类似于(消息,创建的)
我想选择那些在x秒内的行。假设最后一条消息在x秒内(从现在起),则它应该选择它。如果最后一条消息在最后一条消息的x秒内,那么它也应该选择它。换句话说,每一行都应该与下一行进行比较并选中。最后一行应该用say now()检查。基本上我想要最后一个消息会话(即,我们相互链接的最后一组消息,假设x秒内的连续消息相互链接)
我不知道如何为此编写一个sql查询。有可能吗?
非常感谢你抽出时间。
最佳答案
此脚本在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