Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL查询以使值重复并从表中删除重复项_Mysql_Sql - Fatal编程技术网

MYSQL查询以使值重复并从表中删除重复项

MYSQL查询以使值重复并从表中删除重复项,mysql,sql,Mysql,Sql,我有一个表,行数为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

我有一个表,行数为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
在上述情况下,我必须根据客户类型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
事实上,任何重复值的记录都可以。但不应如下所示(在以下情况下,数据列值空格和大括号将从现有值中删除)

有什么帮助吗

非常感谢

问候


Kiran

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

SELECT * FROM table WHERE data LIKE "%G%M%1%" 
其中%表示几乎任何东西(无、空格、字符等)


虽然我不确定这是否可靠,因为上面的内容也会与“大师7331”相匹配,但如果你确定这些碰撞不会发生,它可能会起作用

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

SELECT * FROM table WHERE data LIKE "%G%M%1%" 
其中%表示几乎任何东西(无、空格、字符等)

虽然我不确定这是否可靠,因为上面的内容也会与“大师7331”相匹配,但如果你确定这些碰撞不会发生,它可能会起作用

添加自动递增键“ID”

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

添加一个自动递增键“ID”


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

选择distinct(id),新闻中的艺术家
一个示例谢谢您的回复,在这里我不能使用distinct。。因为如果在格式化数据上使用distinct,则实际记录值并不完全重复。。请检查我上面给出的例子。。我必须删除一些字符以使其重复Shi Zohaib,感谢您的回复。很抱歉没有,但如果我们需要,我可以添加另一列作为主键,并将其设置为自动递增
选择DISTINCT(id),新闻中的艺术家一个示例谢谢您的回复,在这里我不能使用DISTINCT。。因为如果在格式化数据上使用distinct,则实际记录值并不完全重复。。请检查我上面给出的例子。。我必须删除一些字符以使其重复Shi Zohaib,感谢您的回复。很抱歉,没有,但如果我们需要,我可以添加另一列作为主键,并使其成为自动递增。很抱歉,这没有帮助。。谢谢你的回答我很抱歉这没用。。谢谢你的回复,谢谢你的快速解决方案。我正在运行它。花时间。。。子查询相当快。。但是不在需要时间。再次感谢,我为上面的子查询创建了一个临时表,在上面创建了索引,并使用了“不存在”。查询运行得非常快,删除了不需要的记录。感谢这个奇妙的快速解决方案。我正在运行它。花时间。。。子查询相当快。。但是不在需要时间。再次感谢,我为上面的子查询创建了一个临时表,在上面创建了索引,并使用了“不存在”。查询运行得非常快,删除了不需要的记录。
delete 
from table
where table.ID NOT IN (
            select MAX(ID)
            from table
            group by customer_id, your_function(data) )