2014-04-11 72 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可以使用连接而不是子查询。 –