如何删除表格中的副本
答案 0 :(得分:2)
如果你不喜欢数据库中的重复值,你可能应该设置一个唯一的索引。
我为您测试了一个复杂的查询,它删除了表测试中具有相同名称的所有dublicates。 id最低的那个不会被删除。
您必须创建这些派生表(SELECT * FROM test
),因为通常禁止在更新表中执行select。
享受它。
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
)
答案 1 :(得分:1)
http://www.kodyaz.com/articles/delete-duplicate-records-rows-in-a-table.aspx
通过假设,tablesample(firstname,lastname, id )
从用户删除 在哪里( SELECT Users.Id 来自用户 INNER JOIN Dublicates_CTE ON Users.FirstName = Dublicates_CTE.FirstName AND Users.LastName = Dublicates_CTE.LastName AND Users.Id&lt;&gt; Dublicates_CTE.Id )