我有一个 department
表,我想选择并删除departmentid
的所有引用行和 departmentidparent
从部门 ID 表中,让我们假设 departmentid=13
.
这意味着
Departmentid departmentidparent
13 13
14 13
15 13
16 14
17 14
在此,应从表中删除所有行。我很困惑,没有任何想法如何解决它。
最佳答案
带 sample 表
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
关于SQL Server - 如何删除递归行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12502502/