2014-04-11 76 views
0

問題:編寫查詢以刪除DVD格式中不可用的所有視頻。使用SQL刪除問題

問題:有些視頻可以有多種格式(例如VCR和DVD),但我的查詢仍然會將其刪除。因此,在下面的參考文獻中,我的數據庫中仍然應該有Matrix和Tights,但它仍然會刪除Matrix,因爲它也可用於VCR。有任何想法嗎?

我的查詢(應我甚至可以使用子查詢?)

DELETE FROM video 
WHERE VIDEO_ID IN (
    SELECT VIDEO_ID 
    FROM video_format 
    WHERE FORMAT_ID NOT IN (
     SELECT FORMAT_ID 
     FROM format 
     WHERE FORMAT_DESC='DVD')) ; 

表:格式

Column format_id, format_desc 
      1  VCR 
      2  DVD 

表:視頻

Columns: video_id, title 
     1   Matrix 
     2   Evil 
     3   Tights 

表:video_format

Columns: video_format_id, video_id, format_id 
       1   1   1 
       2   1   2 
       3   2   1 
       4   3   2 

回答

-1
DELETE FROM video 
WHERE video_id not in (select video_id from video_format where format_id = 2) 

或(IDü不知道業態編號):

DELETE FROM video 
WHERE video_id not in (SELECT video_id FROM video_format WHERE 
    format_id = (SELECT FORMAT_ID 
    FROM format 
    WHERE FORMAT_DESC='DVD')) 
+0

我必須假設用戶不知道壽業態。 – Tzhari

+0

謝謝,這似乎解決了它。 – Tzhari

+0

U可以使用連接而不是子查詢。 –