Ok, so gibt es paar Beiträge hier bereits auf diesem und noch weniger im Internet. Ich habe buchstäblich jeden von ihnen ausprobiert und kann nichts zur Arbeit bringen. Hoffentlich kann jemand hier Mitleid mit mir haben :)LÖSCHEN VON HABEN ZÄHL (*) in MySQL
Hier ist die Daten, mit denen ich arbeite. Ich möchte alle diese Datensätze löschen.
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)
Der nächstgelegene ich zu finden Code gekommen, dass es unten gezeigt wird tun würde. Die Syntax überprüft ok und es läuft, aber es scheint nur die Datenbank aufhängen. Ich habe es so lange wie 10 Minuten laufen lassen und nichts passiert, also brich ich es ab.
DELETE
FROM ag_master
WHERE part_id IN (
SELECT part_id
FROM ag_master
GROUP BY part_desc
HAVING COUNT(*) > 1000
);
Hier ist der Plan auf der tmp Tabelle in the manual
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)
Warum sind die beiden Suchabfragen anders wählen, deine erste unterscheidet sich von deiner zweiten? Auch ich nehme es Sie wollen 1092 + 1401 + 1411 + 1997 + 3425 = 9.326 Datensätze löschen? – Rippo
Nicht sicher, was du meinst? Einer zeigt Ihnen nur die Daten, die ich loswerden möchte, der andere ist der empfohlene Weg, um eine Löschanweisung zu formatieren, während die Zählung verwendet wird. –
Ja, ich möchte alle 9k + Datensätze loswerden. –