
이 문제는 서브쿼리를 작성할 필요가 전혀 없는 문제이다.
그런데 서브쿼리 사용시 오라클과 MY SQL이 다르길래, 기록 삼아 포스팅한다.
프로그래머스 SQL 고득점 KIT 내 IS NULL 문제
Level 1. 나이 정보가 없는 회원 수 구하기.
USER_INFO 테이블에서 나이 정보가 없는 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 USERS로 지정해주세요.
[모두 사용 가능] 정답 확인
SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO
WHERE AGE IS NULL;
간단한 코드 작성이 정답이다. 그런데 서브쿼리를 쓴 사람도 있어서 이게 되나 싶어 서브쿼리 작성 연습해볼 겸 작성해봤는데, 오라클과 MY SQL 정답이 달라서 놀랬다.
[오라클] 정답 확인
SELECT COUNT(USER_ID) AS USERS
FROM ( SELECT USER_ID
FROM USER_INFO
WHERE AGE IS NULL);
서브쿼리 작성시 AS를 붙이지 않음. 붙이면 오류남!
[MY SQL] 정답 확인
SELECT COUNT(USER_ID) AS USERS
FROM ( SELECT USER_ID
FROM USER_INFO
WHERE AGE IS NULL) AS TEMP_TABLE;
서브쿼리 사용 시 () AS 000 별칭 작성해줘야함.
AS를 쓰지 않으면 오류남!
서브쿼리
이런 문제에서는 굳이 서브쿼리를 사용할 필요가 없다. 불필요하게 문장만 길고 복잡해지기 때문.
서브쿼리
+스칼라 서브쿼리
컬럼 대신 사용되므로 반드시 하나의 값만 반환.
+인라인뷰
FROM절에 오는 서브쿼리.
FROM절 등 테이블명이 올 수 있는 위치에 사용 가능.