4

ここに画像の説明を入力

私はテーブルを持っています。部門 ID のテーブルのすべての参照行をdepartment選択して削除したいと思います。departmentiddepartmentidparentdepartmentid=13

つまり

Departmentid         departmentidparent
13                     13
14                     13
15                     13
16                     14
17                     14

この場合、すべての行をテーブルから削除する必要があります。私は非常に混乱しており、解決方法がわかりません。

4

1 に答える 1

7

見本台付き

create table tbl (departmentid int, departmentidparent int)
insert tbl select 13,13
insert tbl select 14,13
insert tbl select 15,13
insert tbl select 16,14
insert tbl select 17,11
insert tbl select 115,17

これは、必要なことを行うクエリです

;with cte as
(
select *
 from tbl
 where departmentid=13
 union all
 select tbl.*
 from tbl
 join cte on tbl.departmentidparent=cte.departmentid
 -- the next line is only required because the sample data has parent=self!
 where tbl.departmentid!=cte.departmentid
)
delete tbl
from cte
where tbl.departmentid = cte.departmentid
于 2012-09-19T20:46:06.337 に答える