mysql5.7 递归查询
时间: 2023-07-23 22:57:10 浏览: 95
MySQL递归查询
MySQL 5.7 不支持递归查询,但可以使用一些技巧来模拟递归查询。
一种常见的方法是使用连接查询(JOIN)和临时表。你可以创建一个临时表来存储中间结果,并在连接查询中使用该临时表。下面是一个示例:
```
CREATE TEMPORARY TABLE temp_table (id INT, parent_id INT);
INSERT INTO temp_table VALUES (1, NULL);
INSERT INTO temp_table VALUES (2, 1);
INSERT INTO temp_table VALUES (3, 2);
INSERT INTO temp_table VALUES (4, 3);
SELECT t1.id, t1.parent_id, t2.id as child_id
FROM temp_table t1
JOIN temp_table t2 ON t1.id = t2.parent_id;
```
这个查询会返回每个节点及其直接子节点的结果:
```
+----+-----------+----------+
| id | parent_id | child_id |
+----+-----------+----------+
| 1 | NULL | 2 |
| 2 | 1 | 3 |
| 3 | 2 | 4 |
+----+-----------+----------+
```
如果你需要递归查询所有的子节点,可以使用多个连接查询来实现。但是,这种方法对于较深的递归查询可能会变得复杂和低效。
另一种方法是使用存储过程或递归公用表表达式(CTE)。然而,这些功能在 MySQL 5.7 中并不可用,而是从 MySQL 8.0 版本开始引入。
如果你需要执行复杂的递归查询,建议考虑升级到 MySQL 8.0 或使用其他支持递归查询的数据库管理系统。
阅读全文