Set Membership
section
테이블에서 2017년 가을학기의 course_id
와 2018년 봄학기의 course_id
를 중복을 제거한 후 뽑아서 보여주세요"위에서 IN대신 NOT IN을 사용하면, 2017년 가을학기에 있는 course_id
중 2018년 봄학기에는 없는 것들을 뽑아서 가져옵니다.
SELECT DISTINCT name
FROM instructor
WHERE name NOT IN ('Mozart', 'Einstein')
"instructor
테이블에서 Mozart도 아니고, Einstein도 아닌 것들의 튜플 중 name
을 뽑아서 보여주세요"
SELECT COUNT (DISTINCT ID)
FROM takes
WHERE (course_id, sec_id, semester, year) IN
(SELECT course_id, sec_id, semester, year
FROM teaches
WHERE teaches.ID = 10101)
"teaches
테이블에서 ID
가 10101인 튜플이 takes
테이블에 있는 것들을 골라, 중복을 제거한 후 ID
의 개수를 계산해주세요"
위의 쿼리문은 예시를 위해 작성한 것이고, 훨씬 간단하게 작성할 수 있습니다.
Set Comparison
SOME은 비교 대상 집합의 원소 중 연산에 만족하는 값이 하나라도 있다면 true, 그렇지 않으면 false를 반환합니다.
(= SOME)은 IN과 같은 의미이지만, (≠ SOME)은 NOT IN과 같은 의미가 아닙니다.
ALL은 비교 대상 집합의 원소가 모두 연산에 만족하면 true, 그렇지 않으면 false를 반환합니다.
(≠ ALL)은 NOT IN과 같은 의미이지만, (= ALL)은 IN과 같은 의미가 아닙니다.