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

时间:2012-12-14 17:50:28

标签: mysql

非常感谢提前。

我的桌子上有两列:
表:contactinfo
专栏:Hometown,MailingAddress

Columns Hometown和MailingAddress包含重复(ugh!)信息,其中Hometown列出“city”,MailingAddress列出“1234 Street,City”

我想从MailingAddress中删除该城市,只要它与Hometown匹配,以便我可以从:

家乡:城市 邮寄地址:1234 Street,City

家乡:城市 邮寄地址:1234 Street,

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

再一次,非常感谢你们。

3 个答案:

答案 0 :(得分:2)

我会用这个:

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

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

答案 1 :(得分:0)

我不知道您使用的是哪个脚本但是您需要先获取匹配的行,然后对每一行使用脚本中的字符串函数来删除重复项,然后更新相应的行。

查询按您的标准选择(如果我理解正确的话):

SELECT * FROM contactinfo WHERE MailingAddress LIKE CONCAT('%', Hometown)

答案 2 :(得分:0)

看看MySQL String函数: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

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

UPDATE contactinfo
SET new_MailingAddress = SUBSTRING_INDEX(MailingAddress, ',' 1) 
WHERE id IN [SELECT offending records]

不是最优雅但应该给你一个起点。查看所有其他字符串函数,看看哪些最符合您的需求。我相信你也可以为更有问题的数据做一些正则表达式。

祝你好运。