所以在这里我需要删除重复的记录。这里的场景是我有5个关键字段。实际数据有4个字段,第5个字段是自动生成的唯一编号。因此,当我仅通过使用这4个字段使用分组检查计数时,我有大约400条记录的重复项。但是这些重复记录的唯一编号有所不同(我们可以删除唯一编号最大的记录)。有没有办法删除这些重复的记录?这些也是6个其他非主键字段,但它们仅供参考。
例如说:
+----------+-------+---------+---------+-----------+
| Field | Field | Field 3 | Field 4 | Unique,Id |
| 1 | 2 | | | |
+----------+-------+---------+---------+-----------+
| Batman | 100 | 50 | Chicago | 100 |
+----------+-------+---------+---------+-----------+
| Batman | 100 | 50 | Chicago | 101 |
+----------+-------+---------+---------+-----------+
| Superman | 50 | 50 | Florida | 102 |
+----------+-------+---------+---------+-----------+
| Flash | 90 | 40 | London | 103 |
+----------+-------+---------+---------+-----------+
| Flash | 90 | 40 | London | 104 |
+----------+-------+---------+---------+-----------+
在此示例中,前4个字段是实际数据字段。
因此,您可以看到Batman和Flash具有重复的值(前4个字段),但是唯一ID不同。因此,在这里我需要从每个记录中删除一条记录,以使它们不会保留为重复记录。可以删除该重复记录的唯一ID的最大值。因此102和104是Batman和Flash的最大唯一ID值,应将其删除。
请帮我。
您可以通过CTE做到这一点。
WITH cte as (
select
ROW_NUMBER() OVER ( PARTITION BY FIELD1 ORDER BY ID) FirstOcurrence,
*
from mySuperHeroTable
)
delete from cte where FirstOcurrence <> 1
编辑:
我建议您在运行删除操作后在Field1上添加一个Unique约束。这样,您就不会再遇到这种情况。
ALTER TABLE mySuperHeroTable ADD CONSTRAINT UQ_mySuperHeroTable_Field1 UNIQUE (Field1);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句