MySql如何使用UPDATE和HAVING?

时间:2017-02-15 22:10:02

标签: mysql sql

我的table1看起来像:  


id name_co name_r temp sld 1 name1 1 ... ... 2 name2 1 ... ... 3 name2 1 ... ... 4 name2 1 ... ... 5 name3 1 ... ... 6 name2 1 ... ...
如果有两个或更多相同的name_r,我需要增加name_co。 为此:

     
id  name_co  name_r  temp  sld
 1   name1     1      ...  ...
 2   name2     1      ...  ...
 3   name2     2      ...  ...
 4   name2     3      ...  ...
 5   name3     1      ...  ...
 6   name2     4      ...  ...

我尝试了不同的选择,然后我就来了:

    UPDATE table1 
        SET name_r = name_r + 1 
        WHERE (SELECT COUNT(*) 
        GROUP BY name_co 
        HAVING name_co > 1)

查询工作并返回0行,但我知道他在某种程度上错了,但我无法弄清楚是什么。有人可以帮忙吗? (还有一点解释,所以我更好理解)

1 个答案:

答案 0 :(得分:1)

--updated intended targets
UPDATE table1 
SET    name_r = name_r + 1 
WHERE  id IN 
(
    -- return those ids again (to avoid the mysql #1093 error)
    SELECT  id
    FROM
    (   -- get all the ids for those names
        SELECT  id
        FROM    table1
        WHERE   name_co IN
        (   -- get all names that have more than one id
            SELECT   name_co
            FROM     table1 
            GROUP BY name_co 
            HAVING   COUNT(id) > 1
        )
    ) a
)