Как удалить дублированные значения, которые не находятся в диапазоне от таблицы MySQL?MySql

Форум по Mysql
Anonymous
Как удалить дублированные значения, которые не находятся в диапазоне от таблицы MySQL?

Сообщение Anonymous »

У меня есть таблица Mysql, как это: < /p>

Код: Выделить всё

CREATE TABLE metric_value (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
metric_id int(10) unsigned DEFAULT NULL,
value decimal(17,2) unsigned NOT NULL,
created timestamp NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (id),
KEY created (created)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
Теперь я хочу удалить все строки, которые содержат то же значение , что и предыдущая строка (например, следующий нижний идентификатор). Кроме того, значение не следует считать дубликатом, если оно хранилось слишком давно (скажем, 1 день назад, настраивается). Я пытался играть с Delete и Inner Join, но это либо удаляет слишком много, либо слишком мало рядов. Это, кажется, не удаляет все дубликаты, например: < /p>

Код: Выделить всё

DELETE t2 FROM metric_value t1
INNER JOIN metric_value t2 ON
(t1.metric_id = t2.metric_id OR (t1.metric_id IS NULL AND t2.metric_id IS NULL))
AND t1.value = t2.value
AND t2.created > t1.created + INTERVAL 1 DAY;
Можно ли это сделать с помощью sql?

Подробнее здесь: https://stackoverflow.com/questions/797 ... ysql-table

Вернуться в «MySql»