mySQL从一列中的两列中删除重复名称

mySQL从一列中的两列中删除重复名称,mysql,Mysql,非常感谢 我的表中有两列: 表:contactinfo 专栏:家乡、邮寄地址 “家乡”和“邮寄地址”列包含重复信息,其中“家乡”列出“城市”,而“邮寄地址”列出“城市1234街” 我想将该城市从MailingAddress中删除,无论它与家乡匹配在哪里,这样我就可以从: 家乡:城市 邮寄地址:成都市1234街 到 家乡:城市 邮寄地址:上海市新街1234号 我不想删除“,”,因为某些MailingAddress条目在街道地址信息中有逗号 再次感谢你们这些了不起的人。我不知道你们在使用什么脚本,但

非常感谢

我的表中有两列:
表:contactinfo
专栏:家乡、邮寄地址

“家乡”和“邮寄地址”列包含重复信息,其中“家乡”列出“城市”,而“邮寄地址”列出“城市1234街”

我想将该城市从MailingAddress中删除,无论它与家乡匹配在哪里,这样我就可以从:

家乡:城市
邮寄地址:成都市1234街

家乡:城市
邮寄地址:上海市新街1234号

我不想删除“,”,因为某些MailingAddress条目在街道地址信息中有逗号


再次感谢你们这些了不起的人。

我不知道你们在使用什么脚本,但首先需要获得匹配的行,然后对每一行使用脚本中的字符串函数删除重复的行,然后更新相应的行

要根据您的条件选择的查询(如果我正确理解您):


看看MySQL字符串函数:

假设您已经识别出违规记录,您应该能够更新一个新的城市和地址字段(使用临时字段,以免更改源数据)。您可以这样做:

UPDATE contactinfo
SET new_MailingAddress = SUBSTRING_INDEX(MailingAddress, ',' 1) 
WHERE id IN [SELECT offending records]
不是最优雅的,但应该给你一个起点。查看所有其他字符串函数,看看哪些函数最适合您的需要。我相信你也可以为更多有问题的数据做一些正则表达式

祝你好运。

我会用这个:

UPDATE contactinfo
SET MailingAddress = replace(MailingAddress, CONCAT(', ', Hometown), ',')
WHERE MailingAddress LIKE CONCAT('%, ', Hometown)

这将选择
MailingAddress
、City
结尾的所有行,并用
、City
替换所有出现的
、City
(因此您必须确保
、City
仅在字符串末尾出现一次)。

我感谢您的帮助!上面的答案效果最好,但我一直在使用字符串函数的链接,谢谢!随时很乐意帮忙。:-)这无疑拉起了所有的记录。不幸的是,我很难找到合适的字符串来执行更改。然而,上面的答案确实有效。谢谢你的回复!
UPDATE contactinfo
SET MailingAddress = replace(MailingAddress, CONCAT(', ', Hometown), ',')
WHERE MailingAddress LIKE CONCAT('%, ', Hometown)