Как в MySQL вывести все элементы которые были созданы последовательно в течении заданного времени, например 30 секунд?

Есть таблица products у которого есть столбец created_at нужно вывести все продукты которые были созданы последовательно в течении 30 секунд,

То есть

product1   2020-06-02 14:20:5
product2   2020-06-02 15:00:5
product3   2020-06-02 15:00:10
product4   2020-06-02 15:00:20
product5   2020-06-02 15:00:40

product6   2020-06-02 15:02:45
product7   2020-06-02 15:03:50

SQL код должен вывести только (OUTPUT)

product2   2020-06-02 15:00:5
product3   2020-06-02 15:00:10
product4   2020-06-02 15:00:20
product5   2020-06-02 15:00:40

Как это можно сделать ?


Ответы (1 шт):

Автор решения: Akina
SELECT *
FROM products t1
WHERE EXISTS ( SELECT NULL
               FROM products t2
               WHERE t1.created_at BETWEEN t2.created_at - INTERVAL 30 SECOND
                                       AND t2.created_at + INTERVAL 30 SECOND
                 AND t1.created_at != t2.created_at )

fiddle

→ Ссылка