как удалить строку, которая вставлена ​​в течение одной минуты из ранее вставленной строки - PullRequest
0 голосов
/ 25 июня 2018

У меня есть отчет о просмотре таблицы продуктов. Каждый клик на странице товара добавляется в эту таблицу с данными IP пользователя и DateTime.

Структура таблицы:

CREATE TABLE `oc_product_viewed_report` (
  `viewed_id` int(11) NOT NULL AUTO_INCREMENT,
  `product_id` int(11) NOT NULL,
  `store_id` smallint(5) unsigned NOT NULL,
  `user_ip` varchar(50) DEFAULT NULL,
  `datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`viewed_id`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8

Пример данных:

+-----------+------------+----------+---------+---------------------+
| viewed_id | product_id | store_id | user_ip | datetime            |
+-----------+------------+----------+---------+---------------------+
|        10 |      10051 |        5 | ::1     | 2018-06-24 15:15:57 |
|        11 |       9594 |       16 | ::1     | 2018-06-24 15:16:29 |
|        12 |       9596 |        5 | ::1     | 2018-06-24 15:16:33 |
|        13 |       9594 |       16 | ::1     | 2018-06-24 15:16:35 |
|        14 |       9594 |       16 | ::1     | 2018-06-24 15:16:37 |
|        15 |       9594 |       16 | ::1     | 2018-06-24 15:16:58 |
|        16 |       9596 |        5 | ::1     | 2018-06-24 15:16:59 |
|        17 |       9594 |       16 | ::1     | 2018-06-24 15:17:05 |
|        18 |       9918 |       16 | ::1     | 2018-06-24 15:17:07 |
|        19 |      10047 |        5 | ::1     | 2018-06-24 16:47:36 |
|        20 |      10047 |        5 | ::1     | 2018-06-24 16:48:04 |
+-----------+------------+----------+---------+---------------------+

Теперь я хочу удалить данные о спам-кликах. Для этого, как удалить строку, которая была сразу вставлена ​​в течение 1 минуты после ранее вставленной строки datetime для продуктов.

Возможно ли это? если да, то помогите мне, пожалуйста,

Спасибо

1 Ответ

0 голосов
/ 25 июня 2018

Можете ли вы попробовать это

Delete from oc_product_viewed_report R1
where exists 
(select id from  oc_product_viewed_report R2 where R2.datetime between R1.datetime and  DATE_ADD (R1.datetime ,INTERVAL +1 MINUTE  and R1.id > R2.id )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...