Otrzymałem dość dużą bazę danych MySQL z dużą ilością duplikatów. Około jedna trzecia bazy danych to duplikaty. Jest również brakuje klucz podstawowy.Usuwanie duplikatów wpisów w bazie danych MySQL bez klucza podstawowego
Struktura bazy danych jest tak:
unique_id | field01 | field02 | field03 | field04 | ...... | field26 | field27 |
Teraz natomiast unique_id ma być dobrze, niepowtarzalny; istnieje wiele duplikatów.
Ponadto, dla zestawu wierszy należących do kopii określonego unikalnego identyfikatora, pozostałe kolumny mogą być lub nie być takie same. Na przykład, patrząc na unique_id 'id_1' poniżej, pole01 jest takie samo w obu przypadkach, ale field02 & pole03 nie są.
Chciałbym usunąć powtórzenia i mieć tylko jedną kopię każdego unique_id przetrwać. Nie ma znaczenia, który z nich przetrwa.
Przykład:
id_1 | abc | dfd | NULL | ... | def |
id_2 | abc | daf | ghi | ... | 12a |
id_1 | abc | xyz | jkl | ... | def |
id_4 | aaa | bbb | NULL | ... | def |
id_3 | NULL | bbb | NULL | ... | 123 |
id_5 | 1e3 | NULL | NULL | ... | def |
id_3 | aaa | bbb | fds | ... | def |
id_9 | awa | bbb | NULL | ... | 910 |
powinien stać:
id_1 | abc | dfd | NULL | ... | def |
id_2 | abc | daf | ghi | ... | 12a |
id_4 | aaa | bbb | NULL | ... | def |
id_3 | NULL | bbb | NULL | ... | 123 |
id_5 | 1e3 | NULL | NULL | ... | def |
id_9 | awa | bbb | NULL | ... | 910 |
Albo to też jest w porządku:
id_2 | abc | daf | ghi | ... | 12a |
id_1 | abc | xyz | jkl | ... | def |
id_4 | aaa | bbb | NULL | ... | def |
id_5 | 1e3 | NULL | NULL | ... | def |
id_3 | aaa | bbb | fds | ... | def |
id_9 | awa | bbb | NULL | ... | 910 |
Gdy to nastąpi, będzie trzeba ustawić unique_is jako główny klucz.
Proszę wskazać najlepszy i dokładny sposób wykonania tej czynności. Z góry dziękuję.
Do chcesz sprawdzić powielanie tylko w kolumnie unique_id? –
Proszę odnieść się do tego wątku, otrzymasz informacje na temat usuwania duplikatów wartości :: http://stackoverflow.com/questions/2728413/equivalent-of-oracles-rowid-in-mysql –