1

我在我的产品中使用了 Table(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 不应该得到更新,因为那个部门是不同的。请提出一些想法并节省我的时间

4

1 回答 1

0

我认为您的查询非常接近。唯一的区别是您要查找与names 匹配的 s,这是对子句manager的一个小改动:where

update managertable
     set ismanager = '1
      where name IN (select manager
                     from managertable
                     group by manager,dept 
                     having count(*) > 1
                    )
于 2013-07-19T02:21:51.937 回答