2010-02-01 29 views
0

我有如下表專輯樹刪除

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

在你給上面的例子中似乎有一個專輯(sdf2342),這是兩個人的sub_album ...這是正常的嗎?如果你刪除23ods和sdf2342,那麼a2243d剩下一個不好的指針... – nicolaskruchten

+0

你的專輯/子層次結構有多深? – davek

+0

層次結構沒有限制... – Basit

回答

-1
Delete from myTable 
where sub_album_id = 'sdf2342' 
OR album_id = 'sdf2342' 

編輯10年2月2日: 我誤解了無限的層次結構,
試試這個,然後:

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上有一個索引),那麼這將會讓你的處理器在大型表上崩潰

+0

我需要無限級別的查詢 – Basit

+0

更新了應該工作的答案 – invertedSpear

+0

這會在mysql數據庫中工作嗎? – Basit