我有一个包含692256行数的表,其数据类似于下面的
customer_type_id data
1 G.M (1)
1 GM (1)
1 FORD (K.G)
1 FORD(K.G)
1 Honda
2 GM (1)
2 OTHER
2 OTHER2
在上述情况下,我必须根据 customer_type_id 和数据列删除重复项。 并且重复项不完全重复。例如,前两个记录是重复的,接下来的两个记录也是重复的。数据中可能存在一些空格或句点或大括号。因此,要获得重复项,我必须在数据列
上运行以下函数trim( replace(replace(replace(replace(replace(data,'.',''),'(',''),')',''),' ','') ,' ','') )
现在我想从上面的案例中删除其中一行,并保留另一行的格式。
在上面的例子中我想要
customer_type_id Data
1 G.M (1)
1 FORD(K.G)
1 Honda
2 GM (1)
2 OTHER
2 OTHER2
事实上,重复值的任何记录都可以。但不应该像下面那样(在下面的情况下数据列值空格和大括号从现有值中删除)
customer_type_id Data
1 GM1
1 FORDKG
1 Honda
2 GM (1)
2 OTHER
2 OTHER2
对此有何帮助?
非常感谢
此致
基兰
答案 0 :(得分:1)
添加自动增量键“ID”
delete
from table
where table.ID NOT IN (
select MAX(ID)
from table
group by customer_id, your_function(data) )
我想它应该可行,请检查/确认语法,我不确定。想法是删除除一个不同组合之外的所有记录。
答案 1 :(得分:0)
也许您可以在查询中使用LIKE。
SELECT * FROM table WHERE data LIKE "%G%M%1%"
%表示任何东西(没有,空格,角色等)。
我不确定这是否可靠,因为上面也会匹配“Grand Master 7331”,但是如果你确定那些碰撞不会发生它可能会有效。