Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usunięcie zduplikowanych rekordów
Forum PHP.pl > Forum > Bazy danych
q3d
W tabeli o strukturze
id|offerId|eventDate|dateCreated|description

gdzie w eventDate znajduje się data w formacie '2017-01-01', a w dateCreated data w formacie '2017-01-01 10:00:01'

W tabeli znajduje się wiele rekordów dla których wartość w offerId,eventDate i description jest taka sama (błąd w skrypcie powodował, że to samo wydarzenie było dodawane wielokrotnie). Chciałbym usunąć te rekordy ale tak by pozostała jeden dla każdego dnia (eventDate).

trueblue
  1. DELETE FROM tabela AS t1, tabela AS t2 WHERE t1.id>t2.id AND t1.eventDate=t2.eventDate

Zrób backup lub wykonaj zapytanie na kopii.
q3d
Sprytne wink.gif Dziękuje bardzo.

W przypadku MySQL miałem tylko problem ze składnią gdyż w postaci:
  1. DELETE FROM tabela AS t1, tabela AS t2 WHERE t1.id>t2.id AND t1.eventDate=t2.eventDate


Zapytanie generował błąd składni. Dodanie aliasu po DELETE rozwiązało problem.

  1. DELETE t1 FROM tabela AS t1, tabela AS t2 WHERE t1.id>t2.id AND t1.eventDate=t2.eventDate


Sprawa druga to czas wykonywania. Rekordów jest ponad 1 200 000, a objętość tabeli to jakieś 72MB. Na localhost zapytanie trwa i końca nie widać. Jak więc to zoptymalizować przeprowadzić. Czy wprowadzenie indeksu dla eventDate coś polepszy? Wprowadzenie LIMIT?
trueblue
Indeks na eventDate to dobry pomysł.
Pyton_000
Możesz też utworzyć nową tabelę , ustawić index unique na te 3 pola, wrzucić tam dane, potem zrobić truncate na poprzedniej i znowu przewalić dane.
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.