2013-10-25 4 views
0

У меня есть таблица «Продукт» с 7 полямиУдаление дубликатов данных из таблицы соответствует записи для некоторых полей

1 Prod_id (PK) 
2 Company_id 
3 Name 
3 Code 
5 Start Date 
6 End Date 
7 Entry Date 
8 Description 

Я хочу, чтобы удалить все повторяющиеся записи (совпавшие 2 t0 6 полей для дублирования) и сохраните только один, у которого есть последняя дата вступления.

Есть ли какой-либо запрос в mysql для выполнения этой задачи. или Как я могу это сделать с помощью php.

+0

Вы уже пробовали? –

+0

Есть способ сделать это, но что вы сделали? – bksi

ответ

0

Вы можете добавить уникальный индекс и падение дублированные с

ALTER IGNORE TABLE Product 
ADD UNIQUE INDEX dup_idx (Prod_id, Company_id, Name, Code,Start Date,End Date); 
0

Попробуйте это:

У меня была та же проблема в прошлом & нашел это решение. Я упоминаю запрос, как показано ниже:

DELETE FROM Product 
      USING Product, Product AS P 
      WHERE MIN(DATEDIFF(P.Entry_Date - Product.Entry_Date)) 
      AND Product.Company_id = P.Company_id 
      AND Product.Name = P.Name 
      AND Product.Code = P.Code; 

Примечание: Добавить & удалить поля в соответствии с вашими требованиями.

Thanks

+0

Да. Его работа прекрасна. но он сохраняет последние записи из дубликатов. Как я могу получить записи, у которых есть дата записи, близкая к текущей дате? –

+0

Nops ..! Это ошибка givin как недопустимое использование групповой функции. –

+0

Попробуйте этот запрос. Я изменил его. Последний раз ошибочно модифицирован. –

Смежные вопросы