Mailinglisten-Archive |
On Mon, Mar 04, 2002 at 10:00:08PM +0100, Danny wrote:
<snip>
>
> """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
> $fis = mysql_query("select id, firma, plz, strasse from mytabelle group by
> firma, plz, strasse HAVING count(*) > 1");
>
> while($f=mysql_fetch_array($fis)){
> mysql_query("delete from mytabelle where id like '$f[id]'");
> }
>
> """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
damit schiesst du dir hoechstens alle doppelten komplett ab!
ergo aus 2 mach 0, nicht 1 ...
ausserdem solltest du ueber alle felder groupen, nach deren gleichheit du
rausfischen willst. wenn beispielsweise alle finden willst, die mit
firma + plz + strasse uebereinstimmen, so musst du nach diesen feldern
gruppieren. ist denn die ID bei dir auch manchmal doppelt ?
also der trick ist der:
#1: nach den key-feldern (die du nicht mehr doppelt haben willst)
gruppieren, alles rausholen, was count > 1 hat.
#2: alles raussuchen, was mit dem in #1 aufgelistetem uebereinstimmt,
das erste dabei auslassen. (offset 1)
#3: die in #2 aufgelisteten rausfegen.
um dir wirklich weiterhelfen zu koennen, brauche ich dein tabellenlayout
und muss wissen, nach welchen feldern zu gruppieren ist ...
> nach 30sec kommt timeout und es sind vielleicht 20 Datens?tze gel?scht :-((
set_time_limit ( -1 );
> Doppelte sind es ab 18.000 von 130.000 *schluchz*
>
> Wie kann ich alle doppelten aufeinmal l?schen ????????????????????
auf einmal geht nicht. aber du kannst die sache auch direkt in
der db machen, indem du ueber temporaere tabellen schaufelst.
~-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