我有个餐桌服务员
状态字段的默认值为0。
我要执行以下操作。如果在此表中的名称上发现重复项,请将具有最小id的记录的状态保持为0,并将其他重复记录的状态更新为“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
有人能推荐吗?谢谢。。。
最佳答案
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
这必须比使用子查询快。
SQL Fiddle
关于mysql - 表中重复记录的更新状态(具有最小ID的记录除外),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17485123/