我試圖從一個表中刪除記錄,如果有超過15個來自同一家公司(如果有超過15個公司的記錄,所有的公司記錄被刪除)。MySQL刪除INNER JOIN中的COUNT不刪除所有記錄
我使用的查詢如下:
DELETE l.* FROM literature_request l
INNER JOIN
(SELECT literature_request_id
FROM literature_request
GROUP BY company
HAVING COUNT(*) > 15) lr
ON l.literature_request_id = lr.literature_request_id;
這應該大約25,000行的地方刪除,但每次只奇怪刪除約500我運行它:
mysql> DELETE l.* FROM literature_request l INNER JOIN (SELECT literature_request_id FROM literature_request GROUP BY company HAVING COUNT(*) > 15) lr ON l.literature_request_id = lr.literature_request_id;
Query OK, 564 rows affected (0.39 sec)
mysql> DELETE l.* FROM literature_request l INNER JOIN (SELECT literature_request_id FROM literature_request GROUP BY company HAVING COUNT(*) > 15) lr ON l.literature_request_id = lr.literature_request_id;
Query OK, 547 rows affected (2.24 sec)
mysql> DELETE l.* FROM literature_request l INNER JOIN (SELECT literature_request_id FROM literature_request GROUP BY company HAVING COUNT(*) > 15 LIMIT 0,30000) lr ON l.literature_request_id = lr.literature_request_id;
Query OK, 533 rows affected (1.27 sec)
mysql> DELETE l.* FROM literature_request l INNER JOIN (SELECT literature_request_id FROM literature_request GROUP BY company HAVING COUNT(*) > 15 LIMIT 0,30000) lr ON l.literature_request_id = lr.literature_request_id;
Query OK, 523 rows affected (0.43 sec)
我m不會在運行之間添加新行,所以我想知道爲什麼每次運行它時會刪除〜500。它不應該第一次刪除所有這些,並且不會影響後續運行的任何行嗎?
這裏有我的錯誤,還是有更好的方法來完成我想要做的?
是否要刪除那些行數多於15行的公司? –
是的。如果一家公司有超過15行,那麼該公司的所有行應該被刪除。 – tkooser