Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] Jak skasowac te same wpisy?
Forum PHP.pl > Forum > Bazy danych
Dagger
Witam!
Mam problem z baza... poprzedni skrypt nie mial zabezpieczenia przez dodawaniem do bazy kilku tych samych wpisow - przez co teraz baza ma spore rozmiary. Jak wykryc i wykasowac niepotrzebne (powtarzajace sie) wpisy w bazie?
Z gory dzieki za pomoc.
kszychu
Jesli te wpisy czyms sie roznia, np id, to wyszukaj wszystkie id dla tego samego wpisu i usuń wszystkie oprócz jednego.
Synaps
Użyj składni [sql:1:0c96abf79f]SELECT DISTINCT(pole) FROM ....[/sql:1:0c96abf79f] wyciągnie Ci to unkialne rekordy , zapamiętaj je , wywal stare i zaimportuj zapamietane...
Jednak moja teoria może być zła :? jeśli nie zamiścisz tu struktury
tabeli i rodzaju rekordów , z poprawny rozwiązaniem może być ciężko.
Dagger
Ale macie jakies sprawdzone skrypty?
Bo nie chcial bym stracic zawartosci bazy.
kszychu
Cytat
Ale macie jakies sprawdzone skrypty?
Bo nie chcial bym stracic zawartosci bazy.


To zrob kopie! Bez kopii nawet sprawdzonym skryptem bym sie nie odwazyl gmerac w produkcyjnej bazie.
Dagger
Mam juz kopie ;-) Tylko mimo wszystko nie chcial bym miec balaganu w bazie bo ponowna instalacja tej bazy to jakies 6 godzin roboty

Momo wszystko... moze jednak ktos ma takowy skrypcik? Sprawdzony.
scanner
Cytat
ponowna instalacja tej bazy to jakies 6 godzin roboty
Ke?questionmark.gif
Cytat
mysql -u user -ppass database < dump.sql
Zajmuje Ci 6 godzin?questionmark.gif?
spenalzo
Pierwsze zapytanie
[sql:1:6bc079b160]SELECT nazwa, id, COUNT(*) AS ilosc FROM aaa GROUP BY nazwa
HAVING ilosc>1 [/sql:1:6bc079b160]
i potem w php w pętli usuwasz rekordy, dla id pobranych z bazy.
Oczywiście 'nazwa' to jest nazwa tej kolumny, która sie powtarza.

BTW: sprawdź najpierw phpmyadminie to zapytanie co Ci zwraca.
spenalzo
Drugi sposób - tworzysz drugą taką samą tabelę o nazwie np. nowa_tabela
Potem:
[sql:1:070e6993c3]INSERT INTO nowa_tabela SELECT DISTINCT * FROM stara_tabela[/sql:1:070e6993c3]
a potem kasujesz starą, nowej zmieniasz nazwe i tyle.

PS. Google mogą (prawie) wszystko: http://www.google.com/search?q=how+to+dele...ntries+in+mysql
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.