2015-07-13 3 views
0

У меня есть таблица в моей базе данных MySQL, в которой мне нужно удалить дубликаты.Удаление дубликатов по максимальной дате

Моя таблица выглядит следующим образом:

unique_id value frequency value_type publication_date 
1    6.5  1   2    2014-12-31 
2    7.5  3   5    2014-06-04 
3    6.5  1   2    2015-07-13 
4    8.0  4   3    2010-12-31 

Ряды 1 и 3 являются дубликатами за дата_публикации исключения. Мне нужно удалить эти дубликаты, но сохранить строку с максимальной датой публикации, поэтому в этом примере я хотел бы удалить строку 1 и сохранить строку 3.

До сих пор я пробовал это, но это дает мне слишком много результатов по мой тестовый стол:

SELECT t.* FROM 
(SELECT MAX(publication_date) AS most_recent_date 
FROM table_1 
GROUP BY `value`,frequency,value_type 
) t1 
JOIN table_1 t 
ON t.publication_date = t1.most_recent_date; 

Любая помощь будет принята с благодарностью.

Спасибо.

ответ

0

Вы можете использовать JOIN для удаления дубликатов в

delete t1 from table_1 t1 
join table_1 t2 on t1.value = t2.value 
and t1.frequency= t2.frequency 
and t1.value_type = t2.value_type 
and t1.unique_id <> t2.unique_id 
and t1.publication_date < t2.publication_date ; 
+0

Я вижу логику этого, но когда я бегу выберите версию этого я не получаю никаких результатов. –