phpbar.de logo

Mailinglisten-Archive

[php] Doppelte Eintraege in einer DB-Tabelle entfernen

[php] Doppelte Eintraege in einer DB-Tabelle entfernen

Enrico Weigelt php_(at)_phpcenter.de
Wed, 10 Apr 2002 16:41:49 +0200


On Wed, Apr 10, 2002 at 08:27:25AM +0200, mwolf_(at)_suedstern-ag.de wrote:

<snip>
> Wer kann mir einen Tipp geben, wie ich mit doppelte Tabellen-Eintraege
> entferne. D.h. alle Attribute ausser dem Index sind identisch.
> 
> Vom Effekt Aehnlich wie:
> 
> DELETE FROM table where ent_a_1= ent_a_2 and ent_b_1= ent_b_2... ;

deine fragestellung ist mir noch etwas unklar ...
doppeleintraege im sinne von mehreren tupeln mit gleichen werden 
kannst du in etwa so kriegen :

    SELECT attr1, attr2, ... FROM foo GROUP BY attr1, attr2, ... HAVING count(*) > 1;
    
damit werden die tupel ueber attr1, attr2 usw zusammengruppiert
(die restlichen attribute werden ausgelassen). wenn count >  1 ist,
tauchen die entsprechenden werte demzufolge mehrfach auf.

    SELECT * FROM foo WHERE (SELECT count(*) FROM foo AS foo_tmp WHERE
	foo.attr1 = foo_tmp.att1 AND foo.attr2 = foo_tmp.attr2 ...) ;
	
sollte auch gehen. hat den vorteil, dass dir dann immer die kompletten 
tupel ausgegeben werden, ist aber wesentlich langsamer ( O(n^2) ).

~-n
--
 Enrico Weigelt    ==   meTUX IT services 
 software development, IT service, internet security solutions
 www:     http://www.metux.de/        phone:     +49 36207 519931
 email:   contact_(at)_metux.de            cellphone: +49 174 7066481


php::bar PHP Wiki   -   Listenarchive