我在我的产品中使用了表(emp)。
+-----+------+---------+------+-----------+-----+
| id | name | Manager | dept | ismanager | DOJ |
+-----+------+---------+------+-----------+-----+
| 101 | XXX | YYY | 1 | 0 | |
| 102 | XX | YY | 2 | 0 | |
| 103 | XXX | YYY | 1 | 0 | |
| 104 | XX | YY | 2 | 0 | |
| 105 | XXX | kkk | 2 | 0 | |
| 106 | XX | zzz | 2 | 0 | |
| 107 | XXX | YYY | 2 | 0 | |
+-----+------+---------+------+-----------+-----+
我想根据'dept'和Manager列编辑isManager列。如果记录,那么经理和部门都要匹配,那时我才需要更新。
我尝试了以下查询,
update managertable set ismanager = '1' where manager IN(select manager from managertable group by manager,dept having count(*) > 1).
但是它更新了所有记录,根据我想要仅更新101和103的示例.107不应该得到更新,因为该部门是不同的。请提出一些建议并节省时间
答案 0 :(得分:0)
我认为您的查询非常接近。唯一的区别是您希望查找与name
匹配的manager
,这是对where
子句的一个小改动:
update managertable
set ismanager = '1
where name IN (select manager
from managertable
group by manager,dept
having count(*) > 1
)