![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 2 Dołączył: 31.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Podczas zmiany hostingu okazało się że w jednej bazie wszystkie dane zostały zdublowane. Całość bazy się podwoiła co daje mi teraz 3 te same pola przez co strasznie obciąża mi procesy z użytkownika. Jak mogę teraz efektywnie usunąć wszystkie zdublowane wpisy tak aby został jeden. Czyli patrząc niżej na screen, dojść do takiego rozwiązania które usunie zakreśloną część. (IMG:http://img153.imageshack.us/img153/8303/dubelc.jpg) Z góry dziękuję. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
grupujesz rekordy na wszystkich kolumnach i je zliczasz funkcją COUNT() i stosując klauzulę HAVING pobierasz te id, które są zdublowane a potem drugim zapytaniem je usuniesz
Ten post edytował tehaha 2.01.2011, 19:29:51 |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Tylko, że ten tutaj pan nie zastosował unikalnego klucza głównego (czytaj ID). Nie będzie to takie proste jak się wydaje.
Ja bym po prostu dodał klucz główny i na nim manewrował. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 2 Dołączył: 31.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Czyli najlepiej teraz będzie dodać do tabeli ID do każdego "wpisu" tak ?
A jak tego dokonać ? |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Dodaj pole id z właściwością "auto_increment". Rekordu ponumerują się same i będziesz mógł kombinować.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
a gdyby dać select into + distinct i przepisać dane do innej tabeli, a następnie zrobić podmiankę tabel
nie mam pewności czy zadziała ale myślę że warto spróbować Ten post edytował sazian 2.01.2011, 19:42:06 |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Mnie się wydaje, że import wykonał się parę razy. Jeżeli tak to wtedy wystarczy znaleźć pierwsze id, które jest ostatnim właściwym rekordem i usunąć wszystkie wyższe.
Przykład rekord - 1 rekord - 2 rekord - 3 duplikat rekordu - 4 duplikat rekordu - 5 itd Wystarczy wtedy zrobić
I po kłopocie. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 2 Dołączył: 31.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
No właśnie. Czyli wszystkie zduplikowane (spójrz na przykład jaki podałem). Oczywiście pod 3 musisz wstawić odpowiednie id (spójrz na przykład). Tylko zrób wszystkie backupy!
Ten post edytował wookieb 2.01.2011, 20:25:46 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
ale tu nie ma ID (IMG:style_emoticons/default/winksmiley.jpg)
|
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Naprawdę? To zupełnie tak samo jak z twoim procesem przeczytania tematu (IMG:style_emoticons/default/snitch.gif)
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 2 Dołączył: 31.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
No ID już dodałem.
wookieb, czyli patrząc na screen wychodzi że mam coś takiego użyć:
(IMG:http://www.bankfotek.pl/image/846786.jpeg) Zgadza się? |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 575 Pomógł: 299 Dołączył: 26.03.2009 Ostrzeżenie: (20%) ![]() ![]() |
|
|
|
![]()
Post
#14
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Nie. Większe od 8 (ponieważ on jest ostatnim unikalnym rekordem). Ale... usuwasz duplikaty tylko dla użytkownika "brajan" ? Myślałem, że chcesz to zrobić dla wszystkich rekordów na raz a w takim wypadku liczba 8 nie będzie prawidłowa.
Dużą masz tą tabelę? Możesz ją gdzieś wrzucić to Ci przerobimy. |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 2 Dołączył: 31.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
6.5MB
Chcę dla wszystkich jednocześnie czyli 8, tak ? |
|
|
![]()
Post
#16
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Wystaw gdzieś dumpa (struktura + dane) z tabeli bo się nie dogadamy.
Jeżeli chcesz robić dla wszystkich to przy usuwaniu rekordów o id większym niż 8 raczej na pewno usuniesz prawidłowe rekordy (bo zostanie Ci tylko 8 rekordów brajana). Wróć proszę do kursu MySQL bo wydaje mi się, że nie masz pojęcia co robisz. Ten post edytował wookieb 2.01.2011, 20:53:37 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 2 Dołączył: 31.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
wookieb, a spojrzałeś na drugiego screena jakiego dodałem ?
Przecież kiedy wpiszę twoje polecenie to usunie mi wszystkie ID większe od 8 czyli wszystkich pozostałych użytkowników a zostawi mi samego brajana, a nie o to nam chodzi. Po backupie rekordy powtarzają się od ID 17169 więc też dlaczego mam wpisać ID 8 ? Jak już wcześniej napisałem kiedy bym dał:
To uzyskał bym taki efekt że właśnie usunie mi wszystkich użytkowników od ID większym niż 17169 czyli same duble... Jeżeli ja źle to rozumiem to widocznie jeszcze żyję nowym rokiem. |
|
|
![]()
Post
#18
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Patrzałem. Jeżeli jesteś pewien że 17170 jest pierwszym zduplikowanym rekordem to twoje zapytanie będzie prawidłowe.
W pewnym sensie ja też się zamieszałem także przepraszam (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 2 Dołączył: 31.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
No tak z tego wynika, bo skoro dodałem pole ID a użytkownik Brajan ma ID 1-8 a następnie od 17170-17178 to wychodz ina to że od takiego ID powtarzają się duble. Zaraz sprawdzę i dam znać (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
wróćmy do mojego sposobu - który działa, sprawdziłem
teraz wywalasz wszytko z tabeli
i przepisujesz unikalne dane
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 15:27 |