2011/07/04

副問合せを使った削除

本来であれば、

DELETE from TABLE_WRK_GRP WHERE WORKER_ID = '103066' and GROUP_CODE = 2365


として、TABLE_WRK_GRPからデータを削除したいのに、すぐに入手できるデータがWORKER_IDと別テーブル、TABLE_GRPで GROUP_CODE と関連付けられている NAME しか分からない場合、
いちいち、TABLE_GRP から NAME でセレクトしGROUP_CODE を取得してから上記のSQLを書くと手間になる。

そのときは副問合せをつかって、そのselect作業もおなじSQL文で実行できる。

DELETE from TTABLEBL_WRK_GRP WHERE WORKER_ID = '103066' and GROUP_CODE in ( select GROUP_CODE from TABLE_GRP where NAME = 'abcdef' )