删除表中的重复项

时间:2011-03-18 05:56:14

标签: oracle

  

可能重复:
  Removing duplicate rows from table in Oracle

如何删除表格中的副本

2 个答案:

答案 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 )

相关问题