phpbar.de logo

Mailinglisten-Archive

AW: Doppelte Einträge löschen (mal wieder)

AW: Doppelte Einträge löschen (mal wieder)

Uwe Driessen driessen at edv-driessen.de
Mit Jan 25 14:40:57 CET 2006


 
> ich habe hier ein kleines Problem mit doppelten Einträgen.
> Eine Suche im Archiv hat mir das hier gebracht:
> select min(primkey) from table group by a,b,c having count (a)>1
> Klingt soweit ganz gut. Aber die Tabelle hat 7.500.000
> Einträge und keinen Index :-|


Ich mache das ganze mit einem normalen Index

Dann lasse ich mit 

INSERT  INTO radacct2(  AcctSessionId ,  AcctUniqueId ,  UserName ,  Realm ,
NASIPAddress ,  NASPortId ,  NASPortType ,  AcctStartTime ,  	AcctStopTime
,  AcctSessionTime ,  AcctAuthentic ,  ConnectInfo_start ,  ConnectInfo_stop
,  AcctInputOctets ,  AcctOutputOctets ,  	CalledStationId ,
CallingStationId ,  AcctTerminateCause ,  ServiceType ,  FramedProtocol ,
FramedIPAddress ,  AcctStartDelay ,  	AcctStopDelay ,  zähler  ) 
SELECT  AcctSessionId ,  AcctUniqueId ,  UserName ,  Realm ,  NASIPAddress ,
NASPortId ,  NASPortType ,  AcctStartTime ,  AcctStopTime ,
AcctSessionTime ,  AcctAuthentic ,  ConnectInfo_start ,  ConnectInfo_stop ,
AcctInputOctets ,  AcctOutputOctets ,  CalledStationId ,
CallingStationId ,  AcctTerminateCause ,  ServiceType ,  FramedProtocol ,
FramedIPAddress ,  AcctStartDelay ,  AcctStopDelay , count(  *  ) 
FROM radacct
GROUP  BY  AcctUniqueId ,  UserName 
HAVING Count(  *  )  >1;

Alle Daten in eine 2. Datenbank ausspielen 

Dann wird in der Original Daten mit

DELETE radacct FROM  radacct,radacct2  
	WHERE 	radacct2.AcctUniqueID = radacct.AcctUniqueID;

Alle doppelten Eintrage gelöscht und mit

INSERT IGNORE INTO radacct........

Nachdem der Index oder das Feld auf Unique gesetzt wurde alle Daten wieder
zurück gespielt sofern das wirklich identische Datensätze sind sollte das
gehen 

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive