Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Usuwanie nieunikalnych produktow z bazy
Forum PHP.pl > Forum > Przedszkole
Agape
Mam tabele w ktorej mam produkty, oraz tabele `unikalny_nr`, nie moge niestety jej zrobic unique, mam napisane w php pobieranie danych, upraszczajac:

Kod
$produkty_unikalne = array();
foreach ($produkty as $produkty_){
    if(in_array($produkty_['unikalny_nr'], $produkty_unikalne)){
        $this->usun_produkt();
    }else{
        $produkty_unikalne[] = $produkty_['unikalny_nr']
    }
    ...
}


produktow jest 200 tys i system nie daje rady, wiec zaczalem je grupowac i usuwac partiami np. po 100 ale wykonuje sie tak dlugo ze to nie ma sensu. W jaki sposob moge wyonac to w sql ? Potrzebuje zeby pierwszy produkt z tym samym unikalny_nr pozostal a wszystkie nastepne byly usuwane (to wazne zeby pierwszy zostawal)
markuz
A masz w tabeli jeszcze id (auto increment) albo date dodania?
Agape
id nie mam ale dodam date dodania (w formacie date_time) zeby mozna bylo wykonac to zapytanie
elmozaur
Jeśli tak koszmarnie dużo tych danych i wiele duplikatów to może dać SELECT z DISTINCT i zrobić inserty w nowej bazie ?
Agape
no wlasnie musze je usuwac bo serwer nie daje rady z taka iloscia danych, one sie wgrywaja raz na jakis czas i wyrzucenie duplikatow sporo odchudza baze.

moze jakas podpowiedz chociaz ? jezeli ktos wie ?
koodo218
Dodajesz unikalne U_ID dla każdego rekordu (ALTER TABLE).
DELETE z warunkiem gdzie podzapytaniem, w którym wybierasz rekordy mające takie same wartości, ale mające większe U_ID (albo mniejsze, bez różnicy).
Na sam koniec pozbywasz się U_ID.
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.