我有一张桌子员工 字段 id,name,status 。状态字段的默认值为0。 我想执行以下操作。如果在此表中的名称上找到重复项,则将状态保留为0,以使记录具有最小ID,并将状态更新为“5”以用于其他重复记录。 例如:
1 Ram 0
2 Sham 0
5 XYZ 0
6 XYZ 0
7 Sham 0
8 SHam 0
9 Yo YO 0
10 Helo 0
11 xyz 0
运行查询后应该是:
1 Ram 0
2 Sham 0
5 XYZ 0
6 XYZ 5
7 Sham 5
8 Sham 5
9 Yo YO 0
10 Helo 0
11 xyz 5
有人可以建议。谢谢......
答案 0 :(得分:2)
update Employee
set [status]=5
where id not in (select min(id) from Employee
group by name)
<强> SQL FIDDLE 强>
答案 1 :(得分:1)
UPDATE `Employee` t1
JOIN (
SELECT min(id) mid, name, count(*) cnt FROM `Employee`
GROUP BY name
HAVING cnt > 1
) t2 ON t1.name = t2.name AND t1.id != t2.mid
SET t1.status = 5
这必须比使用子查询更快。