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

时间:2016-01-18 22:23:11

标签: mysql sql sql-server

我的桌子上有1百万条记录。 我想将第一行中名为“name”的一个字段与另一行的相同字段进行比较,如果匹配,则更新具有该名称的列“parent”。我该怎么做..?

示例:

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

所以当Name = Name时,请用该名称更新Parent

在这种情况下:

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

2 个答案:

答案 0 :(得分:0)

这不是最好的解决方案,但它有效:

UPDATE table1 SET 'Parent'='Name'
WHERE 'name' IN (
SELECT t1.'Name' FROM table1 t1 HAVING count(*) > 1 );

答案 1 :(得分:0)

update t1 set parent = Name where Name in 
  (select Name from 
    (select Name from t1 group by Name having count(Name) > 1) 
  as Name);

子查询中的双重选择是为了避免“无法为FROM子句中的更新指定目标表”错误。

sqlfiddle