首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SQL问题删除

使用SQL问题删除
EN

Stack Overflow用户
提问于 2014-04-11 06:58:47
回答 2查看 49关注 0票数 0

问题:编写一个查询来删除所有DVD格式不可用的视频。

问题:有些视频可以有多种格式(如录像机和DVD),但我的查询仍然删除它。因此,在下面,我仍然应该有矩阵和紧身衣在我的数据库,但它仍然删除矩阵,因为它也可以在VCR。有什么想法吗?

我的查询(我应该使用子查询吗?)

代码语言:javascript
复制
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')) ; 

表格:格式

代码语言:javascript
复制
Column format_id, format_desc
            1      VCR
            2      DVD

表:录像

代码语言:javascript
复制
Columns: video_id, title
         1         Matrix
         2         Evil
         3         Tights

表: video_format

代码语言:javascript
复制
Columns: video_format_id, video_id, format_id
                1            1           1
                2            1           2
                3            2           1
                4            3           2
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-11 07:05:44

代码语言:javascript
复制
DELETE FROM video 
 WHERE video_id not in (select video_id from video_format where format_id = 2 )

或者(你不知道format_id):

代码语言:javascript
复制
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')) 
票数 -1
EN

Stack Overflow用户

发布于 2018-08-12 08:51:39

解决这一问题的更好和更快的方法是使用Exists子句。

代码语言:javascript
复制
Delete from Video V where not exists
(Select Video_id from video_formt VF Join Format F on VF.Video_Format_id = F.Format_id 
where F.Format_Desc = 'DVD'
and v.video_id = VF.Video_id)

注意,在这种情况下,存在(或不存在)将比使用非in构造更快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23005603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档