MySQL의 모든 하위 및 하위 폴더를 검색하는 재귀 쿼리
질문:
방법 계층적 데이터베이스에서 지정된 상위 폴더 ID에 대한 모든 하위 폴더와 하위 폴더를 검색하는 단일 SQL 쿼리를 설계할 수 있습니까?
시나리오:
다음을 포함하는 테이블 폴더를 고려하세요. 다음 구조:
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 |
문제 설명:
쿼리를 디자인하고 싶습니다. 지정된 상위 폴더 ID에 대한 모든 하위 및 하위 폴더를 반환합니다. 예:
해결책:
다음 쿼리는 재귀 기술을 사용하여 원하는 결과를 얻습니다.
<code class="sql">SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM ( SELECT @pv:=(SELECT GROUP_CONCAT(idFolder SEPARATOR ',') FROM Folder WHERE FIND_IN_SET(idFolderParent, @pv)) AS lv FROM Folder JOIN (SELECT @pv:=5) tmp ) a;</code>
설명:
위 내용은 단일 SQL 쿼리를 사용하여 계층적 데이터베이스의 모든 하위 및 하위 폴더를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!