在IOS更新查询

时间:2013-07-19 01:56:51

标签: ios sql sqlite

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

1 个答案:

答案 0 :(得分:0)

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

update managertable
     set ismanager = '1
      where name IN (select manager
                     from managertable
                     group by manager,dept 
                     having count(*) > 1
                    )