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

あなたの質問はかなり近いと思います。name唯一の違いは、 s に一致する 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 に答える