专辑树删除

时间:2010-02-01 20:51:57

标签: database mysql treeview

我有下表

album_id    |    sub_album_id    |     name
sdf2342     |    0               |   family
a2243d      |    sdf2342         |   wife
23ods       |    sdf2342         |   jack
23jskd      |    0               |   places

我想用所有sub_album删除所选专辑,如果有更多sub_album,那么也删除它们..所以即使sub_album也可以有sub_album ..就像文件夹树视图一样..没有限制。

如何删除所选专辑中相册的所有子专辑..使用一个查询进行。

2 个答案:

答案 0 :(得分:1)

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

http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

答案 1 :(得分:-1)

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,因此您可能需要使用它。除非它被正确编入索引(至少需要sub_album_id和album_id上的索引),否则这会使你的处理器在大型表上爆炸。