我的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行,但我知道他在某种程度上错了,但我无法弄清楚是什么。有人可以帮忙吗? (还有一点解释,所以我更好理解)
答案 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
)