ďťż
 
zduplikowane rekordy ďťż
 
zduplikowane rekordy
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

zduplikowane rekordy



thelete - 20-01-2007 00:01
zduplikowane rekordy
  witam
mam tabele 'kolejka' ktora sklada sie z 2 pol: id, link. lacznie rekordow w
tabeli jest ponad 8 milionow ;). okolo 80 tysiecy rekordow to powtorzenia
czyli rekordy zawierajace ten sam wpis w polu 'link'. Jak skomponowac
zapytanie aby pozbyc sie tych zduplikowanych rekordow. Sam kombinje w ta
strone:

delete from kolejka where link like (select link from kolejka group by link
having count(*) > 1);

dostaje niestety komunikat ze podzapytanie zwraca wiecej niz jeden
wynik....no ok ale przeciez oto chodzi :) wiec stad moje pytanie jak to
inaczej rozwiazac....przyznam ze szukalem na google i doszukalem sie wielu
roznych przykladow z wykorzystaniem dwuch tabel....ale w moim przypadku to
raczej ciezko bedzie przerowadzic ze wzgledu na wielkosc tabeli...stowrzenie
skryptu w php ktory scignie mi np ID zduplikowanych rekordow a nastepnie
przeprowadzi zapytania do bazy typu "delete from kolejka where id=\"$id\""
tez raczej odpada...ze wzgledu na ilosc zduplikowanych rekordow...no bo
raczej ciezko bedzie tworzyc np tablice skladajaca sie z 80 tysiecy wpisow
(gdzies to przeciez trzeba zapisac) i wykonac tylez samo zapytan...
jak to rozwiazac w miare bezbolesnie

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/





Xorock - 20-01-2007 00:01

  thelete wrote:
> witam
> mam tabele 'kolejka' ktora sklada sie z 2 pol: id, link. lacznie rekordow w
> tabeli jest ponad 8 milionow ;). okolo 80 tysiecy rekordow to powtorzenia
> czyli rekordy zawierajace ten sam wpis w polu 'link'. Jak skomponowac
> zapytanie aby pozbyc sie tych zduplikowanych rekordow. Sam kombinje w ta
[..]
Wpisz w google: delete duplicate records
Masz pełno wyników. Nawet nie podałeś jaka baza. Dlaczego nie miałeś
jakiegoś unique na obu skoro nie chciałeś by się powtarzały?




DIUK - 20-01-2007 00:01

  > mam tabele 'kolejka' ktora sklada sie z 2 pol: id, link. lacznie rekordow
> w
> tabeli jest ponad 8 milionow ;). okolo 80 tysiecy rekordow to powtorzenia
> czyli rekordy zawierajace ten sam wpis w polu 'link'. Jak skomponowac
> zapytanie aby pozbyc sie tych zduplikowanych rekordow.

Cztery kroki:
1. tworzysz na boku tabelę TAB1 tylko z rekordów z powtórzeniami
2. tworzysz tabelę TAB2 z TAB1 za pomocą DISTINCT
3. kasujesz z tabeli źródłowej wszystkie rekordy z powtórzeniami
4. wstawiasz do tabeli źródłowej dane z tabeli TAB2

Boczne tabele mają mało rekordów, więc powinno czasowo wyrabiać się OK

pozdrawiam
diuk




Darecky - 20-01-2007 00:01

  delete from kolejka where id in (select max(id) from kolejka group by link
having count(link) > 1)

zamiast max(id) moze byc min(id), wykasuje wczesniejsze , lub pozniejsze
zapisy... a zeby szybciej zadzialalo warto postarac sie o jakis indeks

pozdrawiam
Darecky





Karol Lipnicki - 21-01-2007 00:22

  thelete napisał(a):
> witam
> mam tabele 'kolejka' ktora sklada sie z 2 pol: id, link. lacznie rekordow w
> tabeli jest ponad 8 milionow ;). okolo 80 tysiecy rekordow to powtorzenia
> czyli rekordy zawierajace ten sam wpis w polu 'link'. Jak skomponowac
> zapytanie aby pozbyc sie tych zduplikowanych rekordow. Sam kombinje w ta
> strone:
>
> delete from kolejka where link like (select link from kolejka group by link
> having count(*) > 1);
>
> dostaje niestety komunikat ze podzapytanie zwraca wiecej niz jeden
> wynik....no ok ale przeciez oto chodzi :) wiec stad moje pytanie jak to
> inaczej rozwiazac....przyznam ze szukalem na google i doszukalem sie wielu
> roznych przykladow z wykorzystaniem dwuch tabel....ale w moim przypadku to
> raczej ciezko bedzie przerowadzic ze wzgledu na wielkosc tabeli...stowrzenie
> skryptu w php ktory scignie mi np ID zduplikowanych rekordow a nastepnie
> przeprowadzi zapytania do bazy typu "delete from kolejka where id=\"$id\""
> tez raczej odpada...ze wzgledu na ilosc zduplikowanych rekordow...no bo
> raczej ciezko bedzie tworzyc np tablice skladajaca sie z 80 tysiecy wpisow
> (gdzies to przeciez trzeba zapisac) i wykonac tylez samo zapytan...
> jak to rozwiazac w miare bezbolesnie
Znalazłem ci w googlach coś takiego:
http://www.adp-gmbh.ch/ora/sql/delete_dups.html

BTW polecam tę stronę: http://www.adp-gmbh.ch/ora/

--
---
Pozdrawiam
* @author Karol Lipnicki
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= Jak =?ISO-8859-2?Q?zamieni=E6_dwa_pola_jednej_kolumny_?==?ISO-8859-2?Q?w_dw=F3ch_rekordach_za_pomoc=B1_jednego_zapyt? ==?ISO-8859-2?Q?ania=3F?= [mysql/php] jak =?ISO-8859-2?Q?zliczy=E6_ilo=B6=E6_unikalnyc?==?ISO-8859-2?Q?h_rekord=F3w_w_jednym_zapytaniu=3F?= =?ISO-8859-2?Q?WY=B6wietlenie_rekord=F3w_pocz=B1wszy_od_?==?I SO-8859-2?Q?danej_litery=2E=2E=2E?= =?iso-8859-2?Q?=5BMySQL=5D_Wy=B6wietlenie_wszystkich_rekordow _zawierajacy?==?iso-8859-2?Q?ch_duplikat_a__moze_inna_struktura_bazy_danych ?= [pgsql] Akcja w =?iso-8859-2?b?emFsZb9ub7ZjaQ==?= od liczby zmienionych =?iso-8859-1?q?rekord=F3w?= [postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?= [mysql] Wyszukanie =?ISO-8859-2?Q?rekord=F3w=28powiazane_tabel?==?ISO-8859-2?Q?e=29?= [MySQL]: Dodanie zliczania =?ISO-8859-2?Q?rekord=F3w_do_rozb?==?ISO-8859-2?Q?udowanego_zapytania?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • oefg.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com