2013-06-19 45 views
0

我的表名是啞元,它包含6列其中ID,NAME,TIMESTAMP和其他3列。MySql查詢根據某些列字段從表中刪除重複的行?

我想刪除ID,NAME和TIMESTAMP值與另一行匹配的重複行。如果有多個具有相同ID,NAME和TIMESTAMP值的行,則保留一個並刪除其他行。

+0

。 。其他三列中有什麼? –

+0

[如何查找/刪除同一行中的重複記錄]可能的重複(http://stackoverflow.com/questions/4773201/how-to-find-delete-duplicated-records-in-the-same-row) –

+0

任何3列不需要考慮重複。 –

回答

0

下面是解

https://stackoverflow.com/a/5016434

另一種可能的解決方案,我剛剛碰到:

DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name 
如果你想保持與價值或

最低ID行

DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name 

https://stackoverflow.com/a/5770309

DELETE DupRows.* 
FROM MyTable AS DupRows 
    INNER JOIN (
     SELECT MIN(ID) AS minId, col1, col2 
     FROM MyTable 
     GROUP BY col1, col2 
     HAVING COUNT(*) > 1 
    ) AS SaveRows ON SaveRows.col1 = DupRows.col1 AND SaveRows.col2 = DupRows.col2 
     AND SaveRows.minId <> DupRows.ID; 
0

這是一個示例代碼。這將幫助你完成它。

DELETE duplicate_rows.* 
FROM dummy AS duplicate_rows 
    INNER JOIN (
     SELECT MIN(id) AS id, name, timestamp 
     FROM dummy 
     GROUP BY session_id, user_id, category_id 
     HAVING COUNT(*) > 1 
    ) AS unique_rows 
ON unique_rows.session_id = duplicate_rows.session_id 
AND unique_rows.user_id = duplicate_rows.user_id 
AND unique_rows.category_id = duplicate_rows.category_id 
AND unique_rows.id <> duplicate_rows.id; 

更詳細的解釋,你在這裏找到:http://mildcoder.com/delete-duplicate-rows-from-a-mysql-table/

相關問題