无限分类的删除操作
程序员文章站
2024-02-15 13:35:46
...
无限分类 通过父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());
这也是个思路,不过这也进行多次的查询与删除操作,而且还有子查询。
左右值 + 上下值 就不用递归了 儿子找爸 上下值 祖宗找下面 左右值
下一篇: MySQL数据库中备份/恢复的两方法介绍
推荐阅读
-
无限分类的删除操作
-
Hibernate的delete操作性能测试 博客分类: 技术 HibernateJDBCSQLOracleMySQL
-
Java的移位操作 博客分类: Java基础笔记 JavaBlogJ#
-
.Net中实现无限分类的2个例子
-
php通过前序遍历树实现无需递归的无限极分类,递归_PHP教程
-
C++实现最小堆及插入,调整顺序,删除堆顶元素的操作
-
分享java操作mongodb的crud代码 博客分类: mongodbnosqljava mongodbcrud增删改查
-
PHP通过传引用的思想实现无限分类的方法
-
终于决心删除了自己的相关信息 博客分类: 牢骚依旧 QQ
-
删除无限分类并同时删除它下面的所有子分类的方法_PHP教程