👉문제 바로가기
Q.의사
테이블에서진료과목
이 흉부외과(CS)이거나 일반외과(GS)인 의사를 출력하시오.
다음에 해당하는 SQL기술을 쓸 수 있는지에 대한 문제
-- Oracle
SELECT DR_NAME, DR_ID, MCDP_CD, TO_CHAR(HIRE_YMD,'yyyy-mm-dd')
FROM DOCTOR
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME ASC
-- MySQL
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD,'%Y-%m-%d')
FROM DOCTOR
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME ASC
OR
대신 UNION
으로 기술하여 작성할 수도 있겠지만 결국 OR
조건으로 다시 정렬해야한다.UNION ALL
을 사용하는 것이 성능에 좋다.OR
대신 IN
으로 작성할 수도 있겠다. 성능면에서는 차이가 없지만 가독성과 유지보수측면에서 IN
이 우세하다.