2011-03-18 186 views

回答

2

如果你不喜歡數據庫中的重複值,你可能應該設置一個唯一索引。

我測試了一個複雜的查詢,它會刪除表測試中具有相同名稱的所有dublicates。具有最低ID的人不會被刪除。

您必須創建這些派生表(SELECT * FROM test),因爲通常禁止在更新表中進行選擇。

享受它。

DELETE FROM `test` WHERE `id` IN (
SELECT t1.`id` 
FROM (

SELECT * 
FROM `test` 
) AS `t1` 
LEFT JOIN (

SELECT * 
FROM `test` 
) AS `t2` ON t2.`name` = t1.`name` 
AND t2.`id` < t1.`id` 
GROUP BY t1.`id` 
HAVING count(t2.`id`) >0 
) 
+0

這不是一個大的複雜查詢嗎?這種方法的運行時間/空間複雜性如何? – 2011-06-17 09:46:36