使用SQL检索分层数据

时间:2012-10-25 15:35:06

标签: mysql sql recursion hierarchy hierarchical-data

假设我也有表“文件夹”和“文件”

让文件夹有两列ID和FolderID

Folder
------
ID int primary  <-.
FolderId Int    --`

folderId是文件夹表的Id列的内部关系

文件表有两列ID和FolderId

File
-----
Id int primary
FolderID          --->Folder.ID

FolderId与Folder表的ID列具有外部关系

**Folder**
Id      FolderId
---     --------
1       NULL
2       1
3       NULL
4       2
5       2

**file**
Id      FolderID
---     ---------
1        2
2        3
3        2
4        4
5        5  

希望你能得到这种情况,

我们知道我们可以在文件夹和内部文件夹(递归)中创建许多文件夹

现在我们想得到文件夹id = 2内的所有文件(id)列表及其子文件夹(所需文件ID为3,4,5)

使用递归函数我们可以使这个工作,但如何在SQL中更有效率

1 个答案:

答案 0 :(得分:1)

看看这个问题的答案。 Connect By Prior Equivalent for MySQL

在其他数据库(例如Oracle)中,您可以在SQL语句中使用CONNECT BY,但似乎MySQL不支持选择中的递归。