无限分类的删除操作

WBOY
풀어 주다: 2016-06-23 14:22:05
원래의
972명이 탐색했습니다.

无限分类

通过父ID关联的无限分类表,如果要删除其中的某一时,怎么删除它的所有后代呢?
以前版主写过 不用递归构造树型数组,所以这里看是否能有不用递归的方法能找出所有的后代元素可用于删除

回复讨论(解决方案)

不用递归的话,这个问题我不会。希望楼下各大牛给出答案。
我特别想问一个问题:“在实际的应用中,是否有这种需求?项目经理不让你用递归?”
不以解决问题为目的的自寻烦恼都是耍流氓。。。哈哈。。。

不用递归的话,这个问题我不会。希望楼下各大牛给出答案。
我特别想问一个问题:“在实际的应用中,是否有这种需求?项目经理不让你用递归?”
不以解决问题为目的的自寻烦恼都是耍流氓。。。哈哈。。。

当然是没有强行规定,只是想找出能有其他的路径达成目的。就像没看见版主的实现过程前,构造树形数组也一直以为必须要递归

找到孤儿
SELECT id FROM 表 where pid not in (select id from 表)
后删除对应的记录

需要在循环中进行,因为每次删除就可能有新的孤儿产生

大致这样:

do {  $rs = mysql_query('SELECT group_concat(id) FROM 表 where pid not in(select id from 表)');  list($g) = mysql_fetch_row($rs);  mysql_query("delete from 表 where id in (g)");}where(mysql_affected_rows());
로그인 후 복사
로그인 후 복사

找到孤儿
SELECT id FROM 表 where pid not in (select id from 表)
后删除对应的记录

需要在循环中进行,因为每次删除就可能有新的孤儿产生

大致这样:

do {  $rs = mysql_query('SELECT group_concat(id) FROM 表 where pid not in(select id from 表)');  list($g) = mysql_fetch_row($rs);  mysql_query("delete from 表 where id in (g)");}where(mysql_affected_rows());
로그인 후 복사
로그인 후 복사

这也是个思路,不过这也进行多次的查询与删除操作,而且还有子查询。

左右值 + 上下值  就不用递归了 儿子找爸 上下值 祖宗找下面 左右值

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿