遞歸查詢檢索MySQL 中的所有子文件夾和子子文件夾
問題:
如何我可以設計一個SQL 查詢來檢索分層資料庫中給定父資料夾ID 的所有子資料夾嗎?
場景:
考慮一個表格資料夾以下結構:
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 4,查詢應傳回應傳回 [5, 7, 6]。 對於父資料夾 ID 3,查詢應傳回 [4, 5, 6, 7]。
<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中文網其他相關文章!