이 두 쿼리의 차이점을 이해하지 못합니다. 첫 번째 쿼리는 올바른 아니라, 이제두 삭제 쿼리 간의 SQL 차이점
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
:
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.
두 쿼리
모든첫째,이 스키마입니다 두 번째 쿼리는 있지만 그 이유를 이해하지 못합니다.
첫 번째 쿼리에서 나는 등급이 4 별 미만이고 1970 년 이전 또는 2000 년 이후의 모든 영화에서 mID
을 생성합니다. 그런 다음 등급이 mID
인 것으로보고 행을 삭제합니다. (최소한 내가 생각하는 바)
두 번째 쿼리에서는 등급이 4보다 작고 행의 수가 0보다 작은 모든 행을 삭제할 것이고, mID
은 1970 년 이전의 영화이거나 이 쿼리에서 2000
Stanford의 온라인 데이터베이스 과정에서 온 것입니까? 추억을 다시 불러옵니다 : P –
두 개의 하위 쿼리를 단독으로 실행하면 왜 나타날지 생각됩니다. –
예, 그렇습니다. 결과의 차이를 이해합니다. 논리 차이를 이해하지 못합니다. – FranGoitia