👉문제 바로가기
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이 우세하다.