- 目标
数据库的一张表中,保存了 具有父子级关系的一组数据。1 根据主键id,递归查询它的所有子级;2 递归查询它的所有父级。
- 示意图
- 数据库建表语句
CREATE TABLE `tbl_tree` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8;
- 递归查询所有子级(由上而下)
查询id为1的行,及其所有子级
WITH RECURSIVE td AS (
SELECT * FROM tbl_tree WHERE id = 1
UNION ALL
SELECT c.* FROM tbl_tree c ,td WHERE c.parent_id = td.id
) SELECT * FROM td ORDER BY td.id;
- 递归查询所有父级(由下向上)
查询id为10的行&#