как удалить строку, которая вставлена в течение одной минуты из ранее вставленной строки

0

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

Является ли это возможным? если да, то помогите мне, пожалуйста,

Спасибо

  • 2
    Вам нужно будет использовать триггер для этой операции.
  • 0
    Я склонен согласиться с Гордоном в этом вопросе: во-первых, не вставлять такие записи в таблицу. Вы можете использовать триггеры или даже вычисляемый столбец + уникальный индекс, чтобы предотвратить вставку в таблицу поддельных представлений.
Теги:

1 ответ

0

вы можете попробовать это

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 )
  • 0
    Получение ошибки синтаксиса SQL, пожалуйста, проверьте ее
  • 0
    @jaypadaliya было бы очень полезно, если бы вы указали, какую именно синтаксическую ошибку вы получили, когда пытались выполнить вышеуказанный запрос. Таким образом, ваши отзывы довольно бесполезны.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню