我不明白这两个查询之间的区别。
首先,这是数据库模式:
被问的问题是什么?
这句话英译中的意思是:“这两个查询:”
现在,第一个查询是不正确的,而第二个查询是正确的,但我不明白为什么。
在第一个查询中,我从所有评分低于4星且年份在1970年之前或2000年之后的电影中生成,然后在Rating中查找该并删除该行。(至少我认为它是这样做的)
在第二个查询中,我从Rating表中删除那些星级小于4且是年份在1970年之前或2000年之后的电影的所有行。
首先,这是数据库模式:
Movie ( mID, title, year, director )
English: There is a movie with ID number mID, a title, a release year, and a director.
Reviewer ( rID, name )
English: The reviewer with ID number rID has a certain name.
Rating ( rID, mID, stars, ratingDate )
English: The reviewer rID gave the movie mID a number of stars rating (1-5) on a certain ratingDate.
被问的问题是什么?
Remove all ratings where the movie's year is before 1970 or after 2000, and the rating is fewer than 4 stars.
这句话英译中的意思是:“这两个查询:”
DELETE FROM Rating
WHERE mID in
(SELECT m.mID
FROM Movie m JOIN Rating r ON m.mID = r.mID
WHERE (year < 1970 or year > 2000) and stars < 4)
DELETE FROM Rating
WHERE mID in
(SELECT mID
FROM Movie
WHERE year < 1970 or year > 2000)
and stars < 4
现在,第一个查询是不正确的,而第二个查询是正确的,但我不明白为什么。
在第一个查询中,我从所有评分低于4星且年份在1970年之前或2000年之后的电影中生成,然后在Rating中查找该并删除该行。(至少我认为它是这样做的)
在第二个查询中,我从Rating表中删除那些星级小于4且是年份在1970年之前或2000年之后的电影的所有行。