Having a bit of trouble deleting 8645 duplicate rows...

#//mySQL is broken and you can't reference a table you're deleting from in a
subselect.
#//http://www.thescripts.com/forum/thread490831.html

#// you can't even update said table, so this elegant solution fails too...
#// update buglog set BID = 0 where LogID 
#//     IN (select LogID from buglog group by BID, TS having count(*) > 1
order by BID); 
#// delete from buglog where BID = 0;

So then I tried this hack-method:

DROP TABLE IF EXISTS `dupes`;
CREATE TEMPORARY TABLE dupes 
        SELECT LogID FROM buglog GROUP BY BID, TS HAVING count(*) > 1 ORDER
BY BID;
LOCK TABLES buglog WRITE;
SELECT * FROM buglog WHERE LogID IN (SELECT LogID FROM dupes) LIMIT 10;
#DELETE FROM buglog WHERE LogID IN (SELECT LogID FROM dupes);
UNLOCK TABLES;

The problem is the SELECT (DELETE) is either taking way too long to return
or it's hung. I don't sit there long enough to figure it out. It seems like
it shouldn't take as long as I wait. If I run the delete version, my buglog
table count never decreases in the time I wait.

mysql> select count(*) from buglog;
+----------+
| count(*) |
+----------+
|    34867 | 
+----------+

mysql> select count(*) from dupes; 
+----------+
| count(*) |
+----------+
|     8645 | 
+----------+

What am I doing wrong?

Is there a better way to delete the duplicate rows?


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to