MySQL选择递归获取所有子级

我有一张桌子

 CREATE TABLE IF NOT EXISTS `Folder` (

`idFolder` INT(11) NOT NULL AUTO_INCREMENT,

`FolderName` VARCHAR(150) NOT NULL,

`idFolderParent` INT(11) NULL,

PRIMARY KEY (`idFolder`),

CONSTRAINT `fk_1`

FOREIGN KEY (`idFolderParent`)

REFERENCES `Folder` (`idFolder`)

)

我填写这个表

idFolder , FolderName , idFolderParent

1 ADoc Null

2 ADoc1 1

3 ADoc2 2

4 ADoc3 3

5 ADoc4 4

6 ADoc5 5

7 ADoc6 4

选择idFolder = 1的文件夹时,应返回该文件夹和子子文件夹的所有子文件夹(2,3,4,5,6,7)

当我选择文件夹ID = 4 ==>(5,7,6)

当我选择文件夹ID = 3 ==>(4,5,6,7)

一个查询该怎么做?

谢谢

回答:

这是工作中的一个

SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM (

SELECT @pv:=(SELECT GROUP_CONCAT(idFolder SEPARATOR ',') FROM Folder WHERE idFolderParent IN (@pv)) AS lv FROM Folder

JOIN

(SELECT @pv:=1)tmp

WHERE idFolderParent IN (@pv)) a;

在此处查看SQL固件:http://sqlfiddle.com/#!2 /

02b78 / 1

以上是 MySQL选择递归获取所有子级 的全部内容, 来源链接: utcz.com/qa/434954.html

回到顶部