Mysql 将一行的列与另一行的相同列进行比较,如果有匹配项,则更新第三列

Mysql 将一行的列与另一行的相同列进行比较,如果有匹配项,则更新第三列,mysql,sql,sql-server,Mysql,Sql,Sql Server,我的表中有一百万条记录。 我想将第一行的一个名为“name”的字段与另一行的同一字段进行比较,如果匹配,则使用该名称更新列“parent”。我该怎么办 例如: Name code area Parent ------------------------------------ Nokia 610 cube Investments 240 ahnc Investments 241 hnnc apple 500 sumo Iphone 21

我的表中有一百万条记录。 我想将第一行的一个名为“name”的字段与另一行的同一字段进行比较,如果匹配,则使用该名称更新列“parent”。我该怎么办

例如:

Name    code    area    Parent
------------------------------------
Nokia   610 cube    
Investments 240 ahnc    
Investments 241 hnnc    
apple   500 sumo    
Iphone  210 robert  
因此,当Name=Name时,使用该名称更新父项

在这种情况下:

Name    code    area    Parent
------------------------------------
Nokia   610 cube    
Investments 240 ahnc    Investments
Investments 241 hnnc    Investments
apple   500 sumo    
Iphone  210 robert

这不是最好的解决方案,但它可以:

UPDATE table1 SET 'Parent'='Name'
WHERE 'name' IN (
SELECT t1.'Name' FROM table1 t1 HAVING count(*) > 1 );
子查询中的双击是为了避免“无法在FROM子句中指定更新的目标表”错误


是否有行id阻止选择同一行。您可以发布结构MySQL和/或MS SQL Server吗?(不要给未涉及的产品贴标签…)
update t1 set parent = Name where Name in 
  (select Name from 
    (select Name from t1 group by Name having count(Name) > 1) 
  as Name);