php - mysql,查找父节点

标签 php mysql hierarchical-data

我有一个标准的分层表 ID/PID,如果某个 child 属于某个 ID,我需要查找( bool 值)。有没有办法在 mysql 中执行此操作?

ID   PID
------------
1     0          <- root
...   ...
...   ... 
...   ...
7     1
...   ...
16    1
...   ...
4     0
...   ...
22    16
25    16

有没有办法知道子节点 22 是否属于节点 1 ?我问是因为我想执行一些删除程序,其中节点 1 是我的回收站。所有属于 1 的删除将被永久删除,所有其他删除将替换 PID,因此暂时属于 1。

非常感谢,

最佳答案

基于 Hierarchical queries in MySQL :

SET @x := 22;
SET @y := 0;

select 'yes' as x_comes_from_y 
from dual
where @y in
(
 SELECT  @id :=
        (
        SELECT  pid
        FROM    h
        WHERE   id = @id
        ) AS nodes
 FROM    (
        SELECT  @id := @x
        ) vars
 STRAIGHT_JOIN
        h
 WHERE   @id IS NOT NULL
);

Test it.

关于php - mysql,查找父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14661525/

相关文章:

javascript - 从各种 php 数组中创建 javascript 数组的最有效方法

javascript - 关于如何从数据库检索数据并将其用作变量的建议

php - mysql, php - 字符编码问题`

mysql - 尝试理解 MySQL 自连接

javascript - 如何在 IndexedDB 中表示层次结构?

sql - 在关系数据库中存储分层数据有哪些选项?

php - jquery上传完成后重定向到新页面

php - Facebook-connect 提供了一个重定向循环

php - 我可以从 doctrine2 中的 php 访问鉴别器字段吗?

mysql自增并合并多个数据库为一个master