我已經看過另一個類似主題的問題,但它不能解決我目前遇到的問題。如何通過時間差異刪除MySQL數據庫中的重複內容
我有兩個表:
users (id, name)
projects (id, user_id, image, inserted)
如表中的Flash應用程序錯誤的結果「的項目」有很多重複的(一個項目加幾次)。在連續的副本之間有幾秒的時差(小於10秒),這是確定重複的唯一方法(用戶可以添加無限數量的項目,但創建一個至少需要一分鐘)。
如何選擇和刪除副本(並保留原來的副本)?
編輯:
解決方案由Robin Castlin張貼下面是幾乎沒有,但此查詢:
SELECT p2.id
FROM project AS p
INNER JOIN project AS p2
ON p.id != p2.id AND p.user_id = p2.user_id AND
ABS(TIME_TO_SEC(TIMEDIFF(p.inserted, p2.inserted))) <= 10
GROUP BY p2.id
選擇所有副本(如果用戶添加項目的5倍它給了我5個IDS)。那麼讓我們來扭轉問題:如何從該組中選擇除第一個/最後一個以外的所有內容?還是隻有第一個/最後一個?
通過上述查詢手動(僅約200行)選擇最後,我已經刪除副本。但無論如何,問題是有趣而有趣的 - 對於更大型的數據庫,顯然手動解決方案是不可能的。 – Marek 2013-04-11 11:02:22