У меня есть таблица отчетов о представлении продуктов. Каждый щелчок на странице продукта добавляется в эту таблицу с данными пользовательского 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 для каждого продукта.
Является ли это возможным? если да, то помогите мне, пожалуйста,
Спасибо
вы можете попробовать это
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 )