Mysql时间范围行邻居

时间:2017-06-07 13:58:53

标签: mysql sql time

有这样的表(fruits)

+--------------+-------------+------+-----+---------------------+----------------+
| Field        | Type        | Null | Key | Default             | Extra          |
+--------------+-------------+------+-----+---------------------+----------------+
| id           | int(11)     | NO   | PRI | NULL                | auto_increment |
| time         | timestamp   | NO   |     | CURRENT_TIMESTAMP   |                |
| fruit        | varchar(16) | NO   |     | NULL                |                |
+--------------+-------------+------+-----+---------------------+----------------+

如何选择具有"行邻居"的行?在+/- 10秒的时间范围内?

这是我的样本数据:

INSERT INTO `fruits` VALUES (1,'2016-01-19 02:14:07','apple'),(2,'2016-01-19 02:14:13','banana'),(3,'2017-06-08 06:59:12','melon'),(4,'2017-06-08 06:57:12','strawberry');

这是我的预期结果集:

1   2016-01-19 02:14:07
2   2016-01-19 02:14:13

id为3和4的行在10秒内没有邻居(+/-)。

我以为我可以这样做:

SELECT TIME
FROM fruits
WHERE (DATE_SUB(TIME , INTERVAL 10 SECOND) > ANY
         (SELECT TIME
          FROM fruits))
  AND (DATE_ADD(TIME , INTERVAL 10 SECOND) < ANY
         (SELECT TIME
          FROM fruits));

哪个效果不好而且非常复杂。

0 个答案:

没有答案