2015-12-03 5 views
0

Эй поэтому у меня есть один набор данных со структурой:Удаление дубликатов с где положение

id  product_number  product_type 
1  1001    car 
2  1002    house 

Но данные есть некоторые дубликаты, где:

id  product_number  product_type 
1  1001    car 
2  1001    house 

мне нужно, чтобы удалить дубликаты, но только значение, которое есть = дом.

На мой взгляд, запрос должен быть как:

DELETE * 
FROM table 
WHERE product_number is duplicate AND product_type = house 

Благодарности

+0

Дублированного product_number и/или id? – jarlh

+0

Привет, да обновленный вопрос, дубликаты product_number – Stefkay

ответ

0

В MySQL, вы можете делать то, что вы хотите с join:

delete t 
    from table t join 
     (select product, count(*) as cnt 
      from table 
      group by product 
     ) tt 
     on tt.product = t.product 
    where tt.cnt > 1 and t.product_type = 'house'; 
0
DELETE * 
FROM table 
WHERE id not in 
(select max(id) from table 
     group by product_number) 

И PRODUCT_TYPE = дом

0

Вы можете использовать запрос UPDATE с объединением так:

delete t1.* 
from 
    t t1 INNER JOIN t t2 
    ON t1.product_number = t2.product_number 
    AND t1.product_type='house' AND (
     t2.product_type<>'house' 
     OR t1.id>t2.id 
    ) 
0

У вас есть несколько методов:

1. Вы можете использовать этот запрос:

INSERT INTO new_table (SELECT DISTINCT * FROM old_table WHERE product_type = house) 

2 . Вы можете изменить таблицу и изменить номер своего номера товара, чтобы добавить индекс к нему

ALTER IGNORE TABLE jobs 
ADD UNIQUE INDEX idx_name (product_number); 

Так дублированный строк с одинаковым номером продукта будет сброшен автоматически, а для более see this link here

3. Вы можете попробовать этот запрос:

DELETE n1 FROM table_product p1, table_product p2 WHERE p1.product_number = p2.product_number AND p1.product_type= house 
Смежные вопросы