2015-09-04 3 views
0

Я заметил, что у меня много дубликатов в одной из моих таблиц. Вот пример того, как таблица выглядит (пример с номером один id_product_attribute):Удалите повторяющиеся строки с тем же идентификационным номером

enter image description here

Так что я хочу, чтобы удалить дубликаты валюты для КАЖДОГО id_product_attribute. Желаемый результат - иметь одну валюту id для каждого id_product_attribute. Это означает: 1, 2, 3, 4, 6 -> 5 строк на id_product, а не 10 (5 дубликатов).

Я пытался использовать различные коды, но я не могу заставить его работать:

DELETE FROM product_attribute USING product_attribute, product_attribute pa 
WHERE product_attribute.id_currency > pa.id_currency 
AND product_attribute.id_product_attribute = pa.id_product_attribute 
AND product_attribute_price.id_product_attribute = '16632' 

Так что если я бегу выше, я буду удалять все, и только id_curreny 1 будет оставаться там. Мне нужно иметь:

Attribute Currency 
    16632 - 1 
    16632 - 2 
    16632 - 3 
    16632 - 4 
    16632 - 6 

Может ли кто-нибудь помочь мне с этим? Любой намек был бы очень оценен.

Спасибо

+0

Смотрите это: http://stackoverflow.com/questions/3311903/remove-duplicate-rows-in-mysql или HTTP: // stackoverflow.com/questions/4685173/delete-all-duplicate-rows-except-for-one-in-mysql – PaulF

ответ

1

Лично я хотел бы использовать подзапрос с агрегацией. Но вы также можете принять тот подход, который вам нужен. Вместо того, чтобы присоединиться к регулярным, используйте left join и проверьте, нет совпадений:

DELETE pa 
    FROM product_attribute pa LEFT JOIN 
     product_attribute pa2 
     ON product_attribute.id_currency > pa.id_currency AND 
      pa.id_product_attribute = pa2.id_product_attribute AND 
    WHERE pa.id_product_attribute = '16632' AND 
      pa2.id_product_attribute IS NULL; 
+0

Здравствуйте, спасибо за ваш ответ. В настоящее время я получаю синтаксическую ошибку «Ошибка в запросе (1064): ошибка синтаксиса около« pa LEFT JOIN product_attribute pa2 ON produ »в строке 2». Постараюсь исправить это и посмотреть, работает ли он :) Еще раз спасибо – shieldcy

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