최근 sql문제를 풀면서 나이가 null인 사람의 수를 COUNT하는 문제를 많이 풀었습니다.
그러면서 서브쿼리를 이용해서 풀어보니 열의 수만큼 발생하는 현상이 있었는데
왜그런지 궁금해서 알아보았습니다.
우선 user_ins라는 테이블이 있으면
여기서 name이 null인 사람의 수를 count하는것이 문제였습니다.
SELECT (
select count(*)
from user_info
where age is null) as USERS
from user_info
저는 처음에 이렇게하면 조건이 생기면서 각 열을 검사하고 그것을 카운트해서 USERS라는 컬럼에 하나의 열로 보여줄주 알았습니다 하지만 그 결과는
숫자는 맞지만 테이블의 열의 수만큼 반복되면서 여러줄이 나왔습니다.
왜냐하면 ~~
이렇게 하게되면 USERS라는 행을 만들면서 원래 테이블의 열마다 추가가 되기때문에
모든 열에 추가가 되게 되는것이었습니다.
따라서 모든열에 USERS라는 행이 추가가 되고 거기에 age의 null의 수가 더해지는 현상이 생기는것이었습니다.
SELECT count(*) as USERS
from user_info
where age is null
이렇게 하게되면 조건에 맞는 정보를 찾고 그것의 수를 count해서 그것의 컬럼이름을 USERS라고 하게 되는것이었습니다.
처음 보기에는 너무 시워보였지만 틀린것이 나왔을때 왜 틀리고 이렇게 나오는지도 모르는 저를 보고 너무 충격을 받아서 그냥 썼습니다.ㅎㅎ