问题:编写一个查询来删除所有DVD格式不可用的视频。
问题:有些视频可以有多种格式(如录像机和DVD),但我的查询仍然删除它。因此,在下面,我仍然应该有矩阵和紧身衣在我的数据库,但它仍然删除矩阵,因为它也可以在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发布于 2014-04-11 07:05:44
DELETE FROM video
WHERE video_id not in (select video_id from video_format where format_id = 2 )或者(你不知道format_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')) 发布于 2018-08-12 08:51:39
解决这一问题的更好和更快的方法是使用Exists子句。
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构造更快。
https://stackoverflow.com/questions/23005603
复制相似问题