프로그래머스 DB 문제가 있길래 풀어보았다.
원래 있었나??..
OUTER JOIN에 관한 문제이며 아래 링크에서 문제를 확인할 수 있다.
https://programmers.co.kr/learn/courses/30/lessons/59042?language=oracle
MYSQL, ORACLE
SELECT AOUT.ANIMAL_ID, AOUT.NAME
FROM ANIMAL_OUTS AOUT LEFT OUTER JOIN ANIMAL_INS AINS
ON AOUT.ANIMAL_ID = AINS.ANIMAL_ID
WHERE 1=1
AND AINS.ANIMAL_ID IS NULL
ORDER BY AOUT.ANIMAL_ID
;
ORACLE
SELECT AOUT.ANIMAL_ID
,AOUT.NAME
FROM ANIMAL_OUTS AOUT,
ANIMAL_INS AINS
WHERE 1=1
AND AOUT.ANIMAL_ID = AINS.ANIMAL_ID(+)
AND AINS.ANIMAL_ID IS NULL
ORDER BY AOUT.ANIMAL_ID
;
WHERE 1=1
필자는 SQL을 작성할 때 위와같이 WHERE 절을 시작한다.
이유는 두 가지가 있다.
1.
SQL을 작성하다 조건 한개를 주석 처리하고 보아야 하는 경우가 생길 수 있다.
만약 WHERE절에 있는 조건을 주석처리한다면?
다른 AND 절을 WHERE로 변경해주어야 한다.
이런 수고를 덜고자 WHERE 1=1로 시작한다.
2.
이 경우도 1번 경우와 비슷하다.
개발을 하다 보면 동적 SQL을 작성하게 될 것이다.
만약 WHERE절에 있는 조건을 if문으로 감싸야한다면?
이 경우 또한 다른 AND 절을 WHERE로 변경해주어야 한다.
프로그래머스 LEVEL4 [입양시각구하기2] ORACLE (1) | 2021.10.26 |
---|---|
프로그래머스 LEVEL2 [입양시각구하기1] ORACLE (0) | 2021.10.22 |
프로그래머스 LEVEL4 [보호소에서 중성화한 동물] ORACLE (0) | 2021.10.02 |
프로그래머스 LEVEL3 [오랜 기간 보호한 동물(1)] ORACLE (0) | 2021.10.01 |
프로그래머스 LEVEL3 [있었는데요 없었습니다] ORACLE (0) | 2021.09.29 |
댓글 영역