在PHPMYAdmin中,我正在運行一個Web爬蟲。網絡爬蟲偶爾會拿起相同的網址。在網絡爬蟲,它已經索引了成千上萬的鏈接,我不想重複的鏈接。有沒有辦法在SQL中刪除類似的行(唯一的區別是id字段)在MYSQL中刪除非常非常相似的行
回答
如果你的表名爲the_table
及其字段是id
(一個獨特的領域)和url
,那麼你可以這樣寫:
DELETE
FROM the_table
WHERE id NOT IN
(SELECT *
FROM (SELECT MIN(id)
FROM the_table
GROUP BY url
) t
)
;
(如果您有其他領域的歡迎,並只希望刪除其中所有領域是相同的,除了id
,然後只需添加這些字段的GROUP BY
條款連同url
行。)
只是FYI,您不能在DELETE操作中的子查詢中引用同一個表。它會拋出這個錯誤:'#1093 - 你無法在FROM子句中指定目標表'the_table'進行更新。 – 2012-08-16 18:42:39
@ZaneBien:哦,我忘了那件事。破解MySQL。現在修好了,謝謝。 :-) – ruakh 2012-08-16 18:52:10
不會做我要求的,我要求刪除重複的數據什麼不是ID標籤的一部分 – 2012-08-16 18:57:01
您可以DELETE
除了具有最大ID(最近)的所有URL:
DELETE a
FROM tbl a
LEFT JOIN (
SELECT MAX(id) AS id
FROM tbl
GROUP BY url
) b ON a.id = b.id
WHERE b.id IS NULL
完成這一步之後,它可能是建立在URL字段的唯一約束是一個好主意:
ALTER TABLE tbl ADD UNIQUE idx_unique_url (url);
- 1. mysql - 從InnoDB中刪除行非常慢
- 2. 刪除非常慢
- 3. MySQL Inndob從非常大的數據庫中刪除/清除行
- 4. 刪除/刪除核心數據中的記錄非常非常慢
- 5. MySQL如何從非常大的表中刪除重複的行?
- 6. 如何在類似行中刪除具有非常特定標準的相似行?
- 7. 在非常深的樹上刪除
- 8. 非常慢的mysql
- 9. MySQL的PHP的查詢有時非常快ANSD有時非常非常慢
- 10. Mysql innerjoin非常慢
- 11. Mysql GROUP_CONCAT非常慢
- 12. C++⎼兩個相似的函數,但執行得非常不同
- 13. Raspbian JavaFX非常非常慢
- 14. 刪除sql查詢非常慢
- 15. 數據庫表刪除後非常慢
- 16. 非常緩慢的刪除與子查詢的MySQL基地
- 17. 在MySQL中非常緩慢的查詢
- 18. WAMP上的MySQL非常慢
- 19. 非常慢的mysql表
- 20. MySQL的非常慢環
- 21. 優化從非常大的MySQL表刪除
- 22. MySQL - 非常複雜的隨機行
- 23. Rails 3中真是非常非常奇怪的行爲閃變
- 24. 非常非常非常簡單的電子郵件選項
- 25. 帶SMTP的CodeIgniter非常非常非常慢
- 26. MATLAB:非常小的數字除以非常小的數字
- 27. 複雜(或非常非常簡單)的MySQL查詢?
- 28. 蘭德()返回相同或非常相似的輸出值
- 29. 非常非常簡單的MVVM問題
- 30. 非常非常慢的Excel宏
'id'字段是自動遞增的INT字段嗎? – 2012-08-16 18:34:28
是的,它是一個自動遞增的字段 – 2012-08-16 18:38:49