2016-04-10 4 views
0

Я нашел здесь, чтобы удалить записи с мин ID:Удалить дубликаты из MySql таблицы, используя MinID и комплекс Выберите

DELETE FROM Table WHERE id NOT IN (SELECT MIN(id) FROM Table GROUP BY FieldA) 

Однако я не хочу все найденные дубликаты в таблице, чтобы иметь один с более низкий идентификатор удален, только часть из них. У меня есть другие критерии для других моделей обмана. Таким образом, я сделал свой выбор, чтобы получить набор записей, которые имеют простофили и другие условия, в которых я тогда хочу, МИН Идентификаторы удалены:

Select min(Z),Max(Z),count(*) from Table 
group by P,N 
having count(*)>1 and Min(Z)!=Max(Z) and Min(Z)>0 

Я неясно, как сначала получить, что часть записей, а затем удалить minID из простаков в этой подгруппе

ответ

0

в MySQL использовать LEFT JOIN:

delete t 
    from table t left join 
     (Select min(Z), Max(Z), count(*) 
      from Table 
      group by P, N 
      having count(*) > 1 and Min(Z) <> Max(Z) and Min(Z) > 0 
     ) tt 
     on t.? = tt.? 
    where tt.? is null; 

неясно, как id определяется в вашем выражении. Также неясно, создает ли подзапрос идентификаторы для сохранения или удаления. В приведенной выше версии предполагается, что идентификаторы сохраняются. (Если он генерирует идентификаторы для удаления, то используйте inner join и избавитесь от предложения where.)

+0

Мое выражение - просто создать подмножество таблицы, где: a) есть дубликаты, которые b) Я хочу удалить те с самым низким ID. Существуют дубликаты в таблице, которые существуют там, где я НЕ хочу удалить мин (id) версию дубликата, иначе я бы просто запустить исходный delete min id. Итак, что должно происходить в действительности, следует сказать: «найти подмножество записей в таблице А, которые дублируются, и соответствовать этим дополнительным критериям, а ТОГДА удалить тот, у которого самый низкий ID» – user3649739

+0

@ user3649739. , , Все это можно обработать с помощью 'join'. Однако ваше объяснение по-прежнему не на 100% ясное. Примерные данные и желаемые результаты - особенно, в том числе краевые - полезны. –

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