문제
MySQL
내가 작성한 정답
select max(num) num
from MyNumbers
where num in (select num
from MyNumbers
group by num
having count(num) =1);
내가 작성한 오답
select num
from MyNumbers
group by num
having count(num) = 1
order by 1 desc
limit 1;MyNumbers 테이블에는 단 한 번 등장한 숫자가 없음
→ 그래서 group by + having count(num) = 1 조건을 만족하는 row 자체가 없음
→ 즉 결과 집합이 비어 있음(empty set)
✔ 하지만 빈 결과집합은 NULL을 반환하지 않는다.
→ 그냥 “아무 행도 없음”이기 때문에, MySQL은 결과를 출력하지 않을 뿐
→ NULL을 자동으로 출력해주지 않음

→ 빈 결과일 때 NULL을 반환하고 싶으면 서브쿼리 사용 + COALESCE 하면 됨.
// 이건 정답
select (
select num
from MyNumbers
group by num
having count(num) = 1
order by num desc
limit 1
) as num;Share article
