sql语句如何删除父级连带的所有子级

2020-06-08 14:28发布

sqlsever数据库表中数据如下:
编码 名称 父级编码
aa 测试1 0
zg 测试5 aa
bb 测试2 aa
cc 测试3 bb
dd 测试4 cc

数据库表中数据aa是根节点、父级,有两个子级zg、bb;子级bb又有子级cc和子级cc的子级dd
若删除根节点aa,除了删除zg、bb外,如何删除bb下面的cc、dd;或删除子级bb时,如何删除cc、dd

标签: sql
6条回答
▲ chillily
2楼-- · 2020-06-08 15:09

sql递归

查看更多
萌系小妹纸
3楼-- · 2020-06-08 15:15

递归删除吧

查看更多
做个烂人
4楼-- · 2020-06-08 15:21

在不产生垃圾数据前提下删除的逻辑是:1.删除子表 2.通过主外键关系删除父表。如果从表数据未删除时,正常情况下删除主表数据是不允许的。

查看更多
趁早两清
5楼-- · 2020-06-08 15:23

如果不想改表結構,那就写个递归代码呗。
如果不想写递归代码,或者不会写,那就找别人帮忙写呗。

查看更多
孤傲高冷的网名
6楼-- · 2020-06-08 15:26

 有个思路,PARENT_ID创建一个外键,这个外键指向表的ID,并且设置外键的策略,我记得有一个策略是级联。

查看更多
你好瞎i
7楼-- · 2020-06-08 15:27

这个问题换个思路其实好办。

思路1:递归遍历 但是效率低
思路2:记录节点的全路径

如下设计:

这样删除的时候就可以 通过路径匹配删除父节点下的所有节点,效率也高。(http://www.52interview.com/ (_)

查看更多
登录 后发表回答