-1

我需要在表中查找时差小于 X 分钟的所有记录?
看起来我需要:
- 按时间(unix 时间)对表进行排序,
- 在表中查找当前记录和上一个记录,
- 检查当前时间和上一个时间的差异,
- 如果时间小于 X 分钟,则记录

但是这个Mysql请求会怎么写呢?


我的表:

idbigint(10) NOT NULL AUTO_INCREMENT,
uidint(11) DEFAULT '0',
cidint(11) NOT NULL DEFAULT '0',
uniqueidint(11) NOT NULL,
publishervarchar(255) CHARACTER SET utf8 NOT NULL,
booktitlevarchar(255) CHARACTER SET utf8 NOT NULL,
levelvarchar(50) CHARACTER SET utf8 NOT NULL,
readinglevelint(11) NOT NULL,
statusint(11) NOT NULL DEFAULT '0',
wordsint(11) NOT NULL DEFAULT '0',
persentfloat(7,2)默认“0.00”,
timebigint(10) 默认“0”,

4

1 回答 1

3

-首先你所有的时间列应该是时间戳类型(4B)而不是bigint(8B)

-让我们假设时间列是一个时间戳并且 X=1 那么你可以尝试这样的事情:

SELECT
    first.id,
    second.id
FROM
    my_table as first
INNER JOIN my_table as second
    ON second.time >= first.time
    ON second.time <= DATE_ADD(first.time, INTERVAL 1 MINUTE)
WHERE 1

但我警告你它的效率极低,特别是如果你没有时间列上的索引。

于 2013-04-04T08:23:22.347 回答