SUPPRESSION D'AVOIR COUNT(*) dans MySQL

Ok, donc il y a quelques posts ici déjà, de ce et encore moins sur le web. J'ai vraiment tout essayé, l'un d'eux et ne peut pas obtenir quoi que ce soit au travail. J'espère que quelqu'un ici peut prendre pitié de moi 🙂

Voici les données que je travaille avec. Je veux supprimer tous ces enregistrements.

SELECT
part_desc, count(*) as rec_num
FROM ag_master
GROUP BY part_desc HAVING COUNT(*) > 1000;

+--------------------------------------+---------+
| part_desc                            | rec_num |
+--------------------------------------+---------+
| SILICON DELAY LINE, TRUE OUTPUT      |    1092 |
| LOADABLE PLD                         |    1401 |
| 8-BIT, FLASH, 8 MHz, MICROCONTROLLER |    1411 |
| FPGA                                 |    1997 |
| 8-BIT, MROM, 8 MHz, MICROCONTROLLER  |    3425 |
+--------------------------------------+---------+
5 rows in set (0.00 sec)

Le plus proche que je suis arrivé à trouver le code qui ferait il est indiqué ci-dessous. La syntaxe des contrôles ok et il fonctionne, mais il semble juste d'accrocher la base de données. J'ai laisser tourner pendant 10 minutes et rien ne se passe jamais donc j'ai abandonner.

DELETE
FROM ag_master
WHERE part_id IN (
  SELECT part_id
  FROM ag_master
  GROUP BY part_desc
  HAVING COUNT(*) > 1000
);

Voici le plan d'expliquer sur la tmp table

mysql> EXPLAIN SELECT * FROM ag_master WHERE part_desc IN (SELECT part_desc FROM tmp);
+----+--------------------+-----------+--------+---------------+------+---------+------+--------+-------------+
| id | select_type        | table     | type   | possible_keys | key  | key_len | ref  | rows   | Extra       |
+----+--------------------+-----------+--------+---------------+------+---------+------+--------+-------------+
|  1 | PRIMARY            | ag_master | ALL    | NULL          | NULL | NULL    | NULL | 177266 | Using where |
|  2 | DEPENDENT SUBQUERY | tmp       | system | NULL          | NULL | NULL    | NULL |      1 |             |
+----+--------------------+-----------+--------+---------------+------+---------+------+--------+-------------+
2 rows in set (0.00 sec)
Pourquoi les deux requêtes select différent, votre première diffère de votre second? Aussi, je considérerai que vous souhaitez supprimer 1092+1401+1411+1997+3425 = 9,326 enregistrements?
Pas sûr de ce que tu veux dire? On est juste en vous montrant les données que je veux me débarrasser de l'autre est ce que la méthode recommandée pour le format d'une instruction delete tout en utilisant le devoir compter.
Oui, je veux me débarrasser de tous les 9k + enregistrements.
La première requête DOES NOT retour de la part_id, ajoutez-le à la première requête, puis vous devez ce que je veux dire!
C'est toute la ligne je suis d'essayer de se débarrasser de Rippo

OriginalL'auteur RFQ Master | 2012-05-11