SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_OUTS O LEFT OUTER JOIN ANIMAL_INS I
ON O.ANIMAL_ID = I.ANIMAL_ID
WHERE I.ANIMAL_ID IS NULL;
OUTER JOIN
: JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용
-> USING(두 테이블 간 필드 이름이 동일) 또는 ON(두 테이블 간 필드 이름이 다름) 조건절 필수
LEFT (OUTER) JOIN
- left table에만 있는 행은 right table의 컬럼에 NULL 값을 채움
RIGHT (OUTER) JOIN
- right table에만 있는 행은 left table의 컬럼에 NULL 값을 채움
FULL (OUTER) JOIN
- UNION과 비슷
- 중복되는 데이터 삭제
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.DATETIME > O.DATETIME
ORDER BY I.DATETIME;
(INNER) JOIN
: 양쪽 테이블이 모두 가지고 있는 데이터만을 검색할 때 사용 (≒ 교집합)
SELECT I.NAME, I.DATETIME
FROM ANIMAL_INS I LEFT OUTER JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE O.ANIMAL_ID IS NULL
ORDER BY I.DATETIME
LIMIT 3;
SELECT I.ANIMAL_ID, I.ANIMAL_TYPE, I.NAME
FROM ANIMAL_INS I JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.SEX_UPON_INTAKE LIKE 'Intact%' AND O.SEX_UPON_OUTCOME NOT LIKE 'Intact%'
ORDER BY I.ANIMAL_ID;