
SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_OUTS O
LEFT JOIN ANIMAL_INS A ON A.ANIMAL_ID = O.ANIMAL_ID
WHERE A.DATETIME IS NULL
SELECT ANIMAL_ID, O.NAME
FROM ANIMAL_OUTS O LEFT JOIN ANIMAL_INS USING(ANIMAL_ID)
WHERE INTAKE_CONDITION IS NULL
USING(ANIMAL_ID) 구문은 JOIN 조건에서 두 테이블(ANIMAL_OUTS와 ANIMAL_INS)이 같은 이름의 컬럼(ANIMAL_ID)을 가지고 있을 때 사용할 수 있다.
이 구문은 ON 구문과 같은 역할을 하지만, ON A.ANIMAL_ID = O.ANIMAL_ID 와 같이 명시적으로 양쪽 테이블의 컬럼을 지정하는 대신, USING(ANIMAL_ID)로 더 간결하게 표현할 수 있다.
USING(ANIMAL_ID) 구문은 단지 두 테이블을 ANIMAL_ID를 기준으로 조인하는 데 사용되기 때문에
정확한 필터링하기에는 풀이1이 적절하다.

SELECT
U.USER_ID,
U.NICKNAME,
CONCAT(
U.CITY, ' ',
U.STREET_ADDRESS1, ' ',
U.STREET_ADDRESS2) AS '전체주소',
CONCAT(
SUBSTRING(U.TLNO, 1,3), '-',
SUBSTRING(U.TLNO, 4,4), '-',
SUBSTRING(U.TLNO, 8,4)) AS '전화번호'
FROM USED_GOODS_BOARD B
JOIN USED_GOODS_USER U
ON B.WRITER_ID = U.USER_ID
GROUP BY U.USER_ID
HAVING COUNT(BOARD_ID) >= 3
ORDER BY U.USER_ID DESC
HAVING COUNT(BOARD_ID) >= 3 // 그룹화된 결과 중에서 게시글이 3건 이상인 그룹만을 필터링
HAVING 왜이렇게 생각이 잘 안날까,,
HAVING 절은 GROUP BY 절의 결과에 조건을 적용할 때 사용한다는 것 기억하자..!!CONCAT(left(TLNO,3),'-',mid(TLNO,4,4),'-',right(TLNO,4)) 전화번호
left, mid, right로 사용할 수 있다.