Mysql 是否更新列中重复的行?
我正在处理一个相当大的城市数据库。 我有几排重复的城市,因为它们来自不同的国家/州 我需要做的是: 重复的城市以这种方式连接在一起 ascii\u name+\u+国家代码列:name\u city 只有重复的城市 使用此筛选代码,重复执行以下操作:Mysql 是否更新列中重复的行?,mysql,sql,duplicates,Mysql,Sql,Duplicates,我正在处理一个相当大的城市数据库。 我有几排重复的城市,因为它们来自不同的国家/州 我需要做的是: 重复的城市以这种方式连接在一起 ascii\u name+\u+国家代码列:name\u city 只有重复的城市 使用此筛选代码,重复执行以下操作: SELECT ascii_name FROM cities GROUP BY ascii_name HAVING count (ascii_name)> 1 例如,IMG with Rome我得到3行,我想在列名称中用国家代码区分它们 是m
SELECT ascii_name FROM cities GROUP BY ascii_name HAVING count (ascii_name)> 1
例如,IMG with Rome我得到3行,我想在列名称中用国家代码区分它们
是mysql
我认为您的子查询应该运行良好
select ascii_name+"_"+country_code as name_city
from cities
where ascii_name in
(SELECT ascii_name FROM cities GROUP BY ascii_name HAVING count (ascii_name)> 1);
不确定这是否是你正在寻找的 连接语法因数据库而异。||适用于ANSI连接运算符,适用于Oracle,+适用于SQL server,CONCAT函数适用于MySQL
SELECT CONCAT(ascii_name,'_',country_code) as name_city from cities
where ascii_name in (select ascii_name FROM cities GROUP BY ascii_name HAVING count (ascii_name)> 1)
使用与查找所有重复名称的子查询联接的更新查询
UPDATE cities AS c1
JOIN (SELECT ascii_name
FROM cities
GROUP BY ascii_name
HAVING COUNT(*) > 1) AS c2
ON c1.ascii_name = c2.ascii_name
SET c1.name_city = CONCAT(c1.ascii_name,'_',c1.country_code)
+运算符不在的MySQL中工作concatenation@RavishankarSivasubramaniam,我通过复制他提到的内容来编写伪代码,让他了解查询的外观……如果它能很好地过滤我想要的内容,我就不会执行它。我想要更新整个表中被复制的列的名称_city。它是mysql@manolomanolin对不起,我不明白。上面的查询将为您提供所有重复的城市。你还想要那些不重复的城市吗?如果不使用国家/地区代码连接,我想更新选择update cities set name\u city=CONCATascii\u name的name\u city列,“国家/地区代码”将更新所有行。如果只想更新重复的城市,请更新城市集name\u city=CONCATascii\u name,“国家/地区代码”,国家/地区代码,其中ascii\u名称按ascii\u名称从城市组中选择ascii\u名称,计数ascii\u名称>11052-La columna:“ascii\u名称”在字段列表中不明确。在我将ascii\u名称编辑为c1之前,您是否复制了我的原始代码。ascii\u名称?此代码正确,我成功完成了我想要的操作=DDD