Database 相册树删除

Database 相册树删除,database,mysql,treeview,Database,Mysql,Treeview,我有下表 album_id | sub_album_id | name sdf2342 | 0 | family a2243d | sdf2342 | wife 23ods | sdf2342 | jack 23jskd | 0 | places 我想删除所选相册及其所有子相册,如果有更多子相册,则也将

我有下表

album_id    |    sub_album_id    |     name
sdf2342     |    0               |   family
a2243d      |    sdf2342         |   wife
23ods       |    sdf2342         |   jack
23jskd      |    0               |   places
我想删除所选相册及其所有子相册,如果有更多子相册,则也将其删除。。所以即使是sub_专辑也可以有sub_专辑。。就像文件夹树视图一样。。没有限制

如何删除包含选定相册的相册的所有子相册。。只需一个查询

Delete from myTable 
where sub_album_id = 'sdf2342'
OR album_id = 'sdf2342'
编辑2/2/10: 我误解了无限层次,
那么试试这个:

MyLoop: LOOP
    DELETE FROM MyTable
    WHERE album_ID = 'sdf2342';

    IF SELECT count(*) where sub_album_id not in (select album_ID from MyTable) = 0 THEN LEAVE MyLoop END IF

    DELETE FROM MyTable WHERE sub_album_id not in (select album_ID from MyTable)

END LOOP MyLoop

我的语法可能有点不正确,因为我正在尝试将脚本语言改编为独立的SQL,因此您可能需要使用它。如果没有正确的索引(至少需要子相册id和相册id上的索引)

如果您想从层次结构中递归删除行,这里有一些好的背景:


在您上面给出的示例中,似乎有一张专辑(sdf2342),它是另外两张专辑的子专辑。。。这正常吗?如果删除23ods和sdf2342,那么a2243d留下了一个错误的指针…你的相册/子相册层次结构可以有多深(多少级别)?层次结构没有限制…我需要无限级别的层次结构查询。应该是这样的,我从MySQL文档中提取了大部分代码。最后一个问题,如果我想删除同一相册或任何子相册中的所有媒体,我会怎么做。。桌子的结构很简单。。我不知道我是否理解你的要求。这张桌子会和你贴的桌子不一样吗?