Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

brisanje duplikata

[es] :: MySQL :: brisanje duplikata

[ Pregleda: 2726 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ZeRo8
Wien

Član broj: 168
Poruke: 235
*.goethe-wien.at.



Profil

icon brisanje duplikata31.07.2006. u 13:27 - pre 193 meseci
Koristim mysql server 3.23.33 i hteo bih da iz jedne tabele obrisem sve duplikate.
Ja imam formular na web stranici za prijavu, i ko se prijavi ide direktno u bazu. Primary key je ID. Desava se da se jedna ista osoba prijavi vise puta i ja dobijem u bazi iste podatke u svakom polju sem ID koji ide na autoincrement.
Preko kog upita bi moga obrisati sve duplikate (recimo one koji imaju isto ime, prezime, ulicu i datum rodjenja)?

hvala
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+709 Profil

icon Re: brisanje duplikata31.07.2006. u 13:44 - pre 193 meseci
Za početak, dodaj kontrolu pre upisa novog sloga, da dupli slog uopšte ne bi mogao da ti se pojavi.

Kad to uradiš, mislim da će ti najjednostavnije biti da napišeš malu jednokratnu PHP skriptu za brisanje duplikata, s obzirom da ta verzija MySQL-a ne podržava ugnježđene upite.
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.it-austria.net.

Sajt: www.baze-podataka.net


+2 Profil

icon Re: brisanje duplikata31.07.2006. u 15:24 - pre 193 meseci
1. Kao sto je kolega jablan rekao, osiguraj jedinstvenost slogova.
2. Kreiraj privremenu tabelu tvoja_tabela_copy:
Code:

create table tabela_copy
as
select max(id) id, ime, prezime, ulica, rodjendan from tabela
group by ime, prezime, ulica, rodjendan
(podesi nazive kolona u svojoj tabeli)
3. dropni staru tabelu
Code:
DROP TABLE tabela;

4. preimenuj novu tabelu:
Code:
ALTER TABLE tabela_copy RENAME TO tabela;


i imas na kraju po jedan slog za svakog korisnika.


Umjesto koraka pod 3. i 4. mozes pokusati jedno medjurjesenje, ali posto nemam pri ruci MySQL server, nisam siguran da li ce raditi:
Code:
DELETE FROM tabela
USING tabela_copy
LEFT JOIN tabela_copy
ON tabela_copy.id = tabela.id;
Ako ovo medjurjesenje ne radi, isprobacu ga veceras kod kuce...
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

[es] :: MySQL :: brisanje duplikata

[ Pregleda: 2726 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.