MYSQL Запрос, чтобы сделать значения как дубликаты и удалить дубликаты из таблицы - PullRequest
1 голос
/ 19 марта 2012

У меня есть таблица с числом строк 692256, в которой есть данные, аналогичные приведенным ниже

customer_type_id     data             

1                    G.M (1) 
1                    GM (1)
1                    FORD (K.G)
1                    FORD(K.G)
1                    Honda

2                    GM (1)
2                    OTHER
2                    OTHER2

. В приведенном выше случае необходимо удалить дубликаты на основе customer_type_id и данные столбцы.и дубликаты не совсем дубликаты.Например, первые две записи являются дубликатами, а следующие две записи также являются дубликатами.В данных могут быть пробел, точка или фигурные скобки.Поэтому, чтобы получить дубликаты, я должен запустить следующие функции для data column

trim( replace(replace(replace(replace(replace(data,'.',''),'(',''),')',''),' ','') ,' ','')  )

Теперь я хочу удалить одну из строк из приведенного выше случая и сохранить форматированиедругая строка.

В приведенном выше случае я хочу получить

customer_type_id     Data             

    1                    G.M (1) 
    1                    FORD(K.G)
    1                    Honda

    2                    GM (1)
    2                    OTHER
    2                    OTHER2

На самом деле любая запись с повторяющимся значением будет в порядке.Но не должно быть, как показано ниже (в приведенном ниже случае значения столбцов данных и фигурные скобки удаляются из существующего значения)

 customer_type_id     Data             

    1                    GM1 
    1                    FORDKG
    1                    Honda

    2                    GM (1)
    2                    OTHER
    2                    OTHER2

какая-либо помощь в этом?

Большое спасибо

С уважением

Киран

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Добавить ключ автоинкремента "ID"

delete 
from table
where table.ID NOT IN (
            select MAX(ID)
            from table
            group by customer_id, your_function(data) )

Я думаю, это должно работать, пожалуйста, проверьте / подтвердите синтаксис, я не уверен в этом.Идея состоит в том, чтобы удалить все записи, кроме одной четкой комбинации.

0 голосов
/ 19 марта 2012

Возможно, вы могли бы использовать LIKE в своем запросе.

SELECT * FROM table WHERE data LIKE "%G%M%1%" 

Где% означает буквально что-либо (ничего, пробел, символ и т. Д.).

Я неКонечно, это будет надежно, поскольку приведенное выше также будет соответствовать «Grand Master 7331», но если вы уверены, что такого рода столкновения не произойдут, это может сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...