我有MySQL表'人':
id[byte], name [varchar], surname [varchar], size [int]
大约有1k行,其中大多数是重复的,例如
或
我想删除重复项,但我必须处理: - 修剪 - 大/低的字符 - 空/空记录
我必须记住删除行的'oid',因为我必须在其他表中替换它(它的关系模型) 如何制作一个程序,可以修复我的表'人'并删除这样的重复?
PS它只是一个示例表,真正的表,它有更少的列和更多的数据
答案 0 :(得分:1)
我们在以下方式解决了ETL过程中的类似问题:
战略:
IsDuplicate
添加至少两个新列
NewID
(或者从人员表数据中创建一个新表,然后添加
新专栏)。IsDuplicate
更新为true
并将NewId
列填入已记录的记录ID
。IsDuplicate = true
,现在您可以在其他表中找到这些记录相关数据,并使用newId
值更新关系 查找重复数据:
查找重复数据将与选择需要删除重复集的哪个记录一样困难,这取决于您的应用程序业务,样本可以选择最早的id
。
获取重复项的公式可以创建一个标准名称,如:CONCAT(Upper(Trim(Replace(people.name,' ',''))) ,Upper(Trim(Replace(people.surname' ',''))))
希望这有帮助。