![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 384 Pomógł: 13 Dołączył: 16.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
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) Ten post edytował Agape 7.04.2016, 11:07:54 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
A masz w tabeli jeszcze id (auto increment) albo date dodania?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 384 Pomógł: 13 Dołączył: 16.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
id nie mam ale dodam date dodania (w formacie date_time) zeby mozna bylo wykonac to zapytanie
Ten post edytował Agape 7.04.2016, 12:01:59 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 518 Pomógł: 18 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 ?
Ten post edytował elmozaur 7.04.2016, 14:30:14 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 384 Pomógł: 13 Dołączył: 16.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
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 ? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 114 Pomógł: 25 Dołączył: 22.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 19:45 |