我的表名是啞元,它包含6列其中ID,NAME,TIMESTAMP和其他3列。MySql查詢根據某些列字段從表中刪除重複的行?
我想刪除ID,NAME和TIMESTAMP值與另一行匹配的重複行。如果有多個具有相同ID,NAME和TIMESTAMP值的行,則保留一個並刪除其他行。
我的表名是啞元,它包含6列其中ID,NAME,TIMESTAMP和其他3列。MySql查詢根據某些列字段從表中刪除重複的行?
我想刪除ID,NAME和TIMESTAMP值與另一行匹配的重複行。如果有多個具有相同ID,NAME和TIMESTAMP值的行,則保留一個並刪除其他行。
下面是解
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;
這是一個示例代碼。這將幫助你完成它。
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/
。 。其他三列中有什麼? –
[如何查找/刪除同一行中的重複記錄]可能的重複(http://stackoverflow.com/questions/4773201/how-to-find-delete-duplicated-records-in-the-same-row) –
任何3列不需要考慮重複。 –