mysql5.6和5.7中数据库如何查询字段id=parent_id直到parent_id不存在
时间: 2024-10-23 17:11:32 浏览: 38
MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 参数
在MySQL 5.6和5.7中,你可以使用递归查询(Recursive Common Table Expression,CTE)或者子查询结合无限递归的方式来查找字段`id`等于`parent_id`的记录,直到遇到没有`parent_id`的情况。这里以递归CTE为例:
```sql
WITH RECURSIVE tree AS (
SELECT id, parent_id, 1 AS level
FROM your_table
WHERE id = parent_id -- 初始条件
UNION ALL
SELECT t.id, t.parent_id, tree.level + 1
FROM your_table t
JOIN tree ON t.id = tree.parent_id -- 递归部分
)
SELECT * FROM tree
WHERE level > 0 -- 这里假设level为0表示根节点,大于0则表示有层级
```
在这个查询中,`tree`是一个递归CTE,它首先选择所有初始满足条件`id = parent_id`的行(第一层)。然后在`UNION ALL`后的部分,对满足`t.id = tree.parent_id`的行进行递归,增加一层,直到不再找到符合条件的`parent_id`。
阅读全文