SQLDSQL 활용서브쿼리난이도 4MCQ

SQLD 서브쿼리 기출문제 #3593

문제

주어진 쿼리문과 결과가 동일한 것은?

SQL
UPDATE TAB1 T1 SET COL1 = (SELECT MAX(NULL) FROM TAB2 T2 WHERE T1.COL1 = T2.COL2 AND T1.COL1 >= 200);

① UPDATE TAB1 SET COL1 = (SELECT MAX(COL2) FROM TAB2 T2 WHERE T1.COL1 = T2.COL2 AND T1.COL1 >= 200); ② UPDATE TAB1 SET COL1 = (SELECT COALESCE(MAX(NULL), 0) FROM TAB2 T2 WHERE T1.COL1 = T2.COL2); ③ UPDATE TAB1 SET COL1 = (SELECT MAX(0) FROM TAB2 T2 WHERE T1.COL1 = T2.COL2 AND T1.COL1 >= 200); ④ UPDATE TAB1 SET COL1 = NULL;

정답

4

해설

정답: 4. MAX(NULL)은 결과적으로 NULL을 반환하므로 각 행의 COL1은 NULL로 갱신된다.

오답 풀이

  • 1번: MAX(COL2)는 실제 값의 최댓값을 반환할 수 있어 원문과 다르다.
  • 2번: COALESCE로 NULL을 0으로 바꾸므로 원문과 다르다.
  • 3번: MAX(0)은 조건에 맞는 행이 있으면 0을 반환하므로 원문과 다르다.
  • 4번: 원문은 결과적으로 COL1을 NULL로 갱신하므로 동일하다.

보충 개념 집계 함수 MAX는 모든 입력이 NULL이면 NULL을 반환한다. 스칼라 서브쿼리 결과가 NULL이면 UPDATE 대상 컬럼도 NULL로 설정될 수 있다.

SQLD 시험 준비 가이드

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[SQLD] 서브쿼리 SQL 활용 기출 #3593 | 문어CBT