【问题标题】:MYSQL Query to make the values as duplicates and remove duplicates from tableMYSQL 查询以使值重复并从表中删除重复项
【发布时间】:2012-03-19 09:24:25
【问题描述】:

我有一个行数为 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_iddata 列删除重复项。 并且重复项并不完全重复。例如前两条记录是重复的,接下来的两条记录也是重复的。 data 中可能有一些空格或句点或大括号。所以要获得重复项,我必须在 data 列上运行以下函数

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

对此有什么帮助吗?

非常感谢

问候

基兰

【问题讨论】:

  • SELECT DISTINCT(id), artist FROM news 一个例子
  • 感谢您的回复,在这里我不能使用 distinct .. 因为如果我在格式化数据上使用 distinct,我会丢失真实记录
  • 值不完全重复..请检查我上面给出的示例..我必须删除一些字符以使其重复
  • 您好 Zohaib,感谢您的回复。很抱歉没有,但如果我们愿意,我可以添加另一列作为主键并使其自动递增

标签: mysql sql


【解决方案1】:

添加自动增量键“ID”

delete 
from table
where table.ID NOT IN (
            select MAX(ID)
            from table
            group by customer_id, your_function(data) )

我想它应该可以工作,请检查/确认语法,我不确定。想法是删除除一个不同组合之外的所有记录。

【讨论】:

  • 感谢您提供如此出色的快速解决方案。我正在运行它。需要时间......子查询非常快..但是 NOT IN 需要时间..
  • 再次感谢,我为上述子查询创建了一个临时表,在其上创建了索引并且使用不存在。查询运行得非常快,并删除了不需要的记录。
【解决方案2】:

也许您可以在查询中使用 LIKE。

SELECT * FROM table WHERE data LIKE "%G%M%1%" 

% 代表任何东西(无、空格、字符等)。

我不确定这是否可靠,因为上述内容也可以匹配“Grand Master 7331”,但如果您确定不会发生此类碰撞,它可能会起作用。

【讨论】:

  • 很抱歉,这无济于事.. 感谢您的回复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 2021-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
相关资源
最近更新 更多