
SELECT OUTS.ANIMAL_ID, OUTS.NAME
FROM ANIMAL_OUTS AS OUTS
LEFT OUTER JOIN ANIMAL_INS AS INS
ON OUTS.ANIMAL_ID = INS.ANIMAL_ID
WHERE INS.ANIMAL_ID is NULL
ORDER BY OUTS.ANIMAL_ID
SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_INS as INS
LEFT OUTER JOIN ANIMAL_OUTS as OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.DATETIME > OUTS.DATETIME
ORDER BY INS.DATETIME
SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_INS as INS JOIN ANIMAL_OUTS as OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.DATETIME > OUTS.DATETIME
ORDER BY INS.DATETIME
SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_INS as INS JOIN ANIMAL_OUTS as OUTS
WHERE INS.ANIMAL_ID = OUTS.ANIMAL_ID AND INS.DATETIME > OUTS.DATETIME
ORDER BY INS.DATETIME
SELECT i.animal_id, i.name
FROM animal_ins as i, animal_outs as o
WHERE i.animal_id = o.animal_id and i.DATETIME > o.DATETIME
ORDER BY i.DATETIME
SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_INS as INS
LEFT JOIN ANIMAL_OUTS as OUTS
WHERE INS.ANIMAL_ID = OUTS.ANIMAL_ID AND INS.DATETIME > OUTS.DATETIME
ORDER BY INS.DATETIME
SELECT INS.NAME, INS.DATETIME
FROM ANIMAL_INS as INS
LEFT JOIN ANIMAL_OUTS as OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE OUTS.ANIMAL_ID IS NULL
ORDER BY INS.DATETIME
LIMIT 3
SELECT O.ANIMAL_ID, O.ANIMAL_TYPE, O.NAME
FROM ANIMAL_OUTS as O
LEFT JOIN ANIMAL_INS as I
ON O.ANIMAL_ID = I.ANIMAL_ID
WHERE I.SEX_UPON_INTAKE != O.SEX_UPON_OUTCOME
ORDER BY I.ANIMAL_ID
SELECT I.ANIMAL_ID, I.ANIMAL_TYPE, I.NAME
FROM ANIMAL_INS as I JOIN ANIMAL_OUTS as O
WHERE I.ANIMAL_ID = O.ANIMAL_ID AND I.SEX_UPON_INTAKE != O.SEX_UPON_OUTCOME
ORDER BY I.ANIMAL_ID
SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
FROM ANIMAL_INS A JOIN ANIMAL_OUTS B
ON A.ANIMAL_ID=B.ANIMAL_ID
WHERE A.SEX_UPON_INTAKE LIKE 'INTACT%'
AND (B.SEX_UPON_OUTCOME LIKE 'SPAYED%'
OR B.SEX_UPON_OUTCOME LIKE 'NEUTERED%')
ORDER BY A.ANIMAL_ID
JOIN에 관한 포스팅
https://velog.io/@anotheryoung/MySQLJOIN
WHERE에서 조건 걸때,
문자열이 특정 조건에 부합하는지 확인할 때 사용.
%를 이용한 LIKE
_를 이용한 LIKE
응용
공백 또한 포함되기 때문에, 유의하자.
사용자의 입력 값을 받는다면 trim이 필수적이다.
WHERE에서 조건 걸 때 사용.