mysql父子层级_多级数据-Mysql中的递归层次查询(父子查询)

多级数据-Mysql 中的递归层次查询(父子查询)

最近遇到了一个问题,在mysql 中如何完成节点下的所有节点或节点上的所有父节点的查询?

在Oracle 中我们知道有一个Hierarchical Queries 可以通过CONNECT BY 来查询,但是,在MySQL 中还没有对应的函数!!! 下面给出一个function 来完成的方法

下面是sql 脚本,想要运行的直接赋值粘贴进数据库即可。

创建表treenodes (可以根据需要进行更改)

1 2 3 4 5 6 7 8 9 10 -- ----------------------------

-- Table structure for `treenodes`

-- ----------------------------

DROP TABLE IF EXISTS `treenodes`;

CREATE TABLE `treenodes` (

`id` int (11) NOT NULL ,

`nodename` varchar (20) DEFAULT NULL ,

`pid` int (11) DEFAULT NULL ,

PRIMARY KEY (`id`)

) ENGINE =InnoDB DEFAULT CHARSET =latin1;

插入几条数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -- ----------------------------

-- Records of treenodes

-- ----------------------------

INSERT INTO `treenodes` VALUES ('1', 'A', '0');

INSERT INTO `treenodes` VALUES ('2', 'B', '1');

INSERT INTO `treenodes` VALUES ('3', 'C', '1');

INSERT INTO `treenodes` VALUES ('4', 'D', '2');

INSERT INTO `treenodes` VALUES ('5', 'E', '2');

INSERT INTO `treenodes` VALUES ('6', 'F', '3');

INSERT INTO `treenodes` VALUES ('7', 'G', '6');

INSERT INTO `treenodes` VALUES ('8', 'H', '0');

INSERT INTO `treenodes` VALUES ('9', 'I', '8');

INSERT INTO `treenodes` VALUES ('10', 'J', '8');

INSERT INTO `treenodes` VALUES ('11', 'K', '8');

INSERT INTO `treenodes` VALUES ('12', 'L', '9');

INSERT INTO `treenodes` VALUES ('13', 'M', '9');

INSERT INTO `treenodes` VALUES ('14', 'N', '12');

INSERT INTO `treenodes` VALUES ('15', 'O', '12');

INSERT INTO `treenodes` VALUES ('16', 'P', '15');

INSERT INTO `treenodes` VALUES ('17', 'Q', '15');

把下面的语句直接粘贴进命令行执行即可(注意修改传入的参数,默认rootId ,表明默认treenodes )


版权声明:本文为weixin_32382335原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。