我有下表
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 ..就像文件夹树视图一样..没有限制。
如何删除所选专辑中相册的所有子专辑..使用一个查询进行。
答案 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上的索引),否则这会使你的处理器在大型表上爆炸。