php - 如何删除同一张表中存储的分层父子记录

标签 php mysql hierarchical-data moodle

id name      parentid
 1 category     0
 2 question1    1
 3 type1        2
 4 type2        2
 5 question2    0
 6 type2        5
 7 type2        5

地点:

  • 类别是父级
  • question1question2 是 child
  • type1type2type3type4 是孙辈

我想写一个 MySQL 语句来删除选定的父项及其所有子项记录。我该怎么做?

最佳答案

MySQL 不支持递归查询...

如果您有预定的深度,您可以通过一些连接来完成。

否则,您将需要在应用程序中的代码中执行此操作,或编写存储过程/函数来执行此操作。

编辑:快速递归函数删除...

function recursiveDelete($id) {
    $result=mysql_query("SELECT * FROM yourTable WHERE parentid='$id'");
    if (mysql_num_rows($result)>0) {
         while($current=mysql_fetch_array($result)) {
              recursiveDelete($current['id']);
         }
    }
    mysql_query("DELETE FROM yourTable WHERE id='$id'");
}

关于php - 如何删除同一张表中存储的分层父子记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10682096/

相关文章:

php - 垂直显示表格

php - 如何在不同单元格中存储mysql下拉列表中的多个选定值

php - 从 MySQL 查询中检索列名

mysql - 加入一对多与多个where

Mysql客户端登录无需任何身份验证

sql - 将平面表解析为树的最有效/优雅的方法是什么?

php - 如何使用 api 获取所有谷歌搜索结果

php - $_SERVER ['REQUEST_URI' ] 和 header ('location: ...' 的任何安全问题);

mysql - 使用 CakePHP Tree Behavior 在一张表中有多棵树

mysql - 父类别的所有子类别列表