[MySQL] WHEN절 연산자

lazy_h·2025년 12월 19일

MySQL 다루기

목록 보기
1/18
post-thumbnail

(※개인 공부 목적의 게시물입니다.)


프로그래머스 > sql > select > Python 개발자 찾기

문제 바로가기


<문제설명>

DEVELOPER_INFOS 테이블은 개발자들의 프로그래밍 스킬 정보를 담은 테이블입니다.

DEVELOPER_INFOS 테이블 구조는 다음과 같으며, ID, FIRST_NAME, LAST_NAME, EMAIL, SKILL_1, SKILL_2, SKILL_3는 각각 ID, 이름, , 이메일, 첫 번째 스킬, 두 번째 스킬, 세 번째 스킬을 의미합니다.

NAMETYPEUNIQUENULLABLE
IDVARCHAR(N)YN
FIRST_NAMEVARCHAR(N)NY
LAST_NAMEVARCHAR(N)NY
EMAILVARCHAR(N)YN
SKILL_1VARCHAR(N)NY
SKILL_2VARCHAR(N)NY
SKILL_3VARCHAR(N)NY

<문제>

DEVELOPER_INFOS 테이블에서 Python 스킬을 가진 개발자의 정보를 조회하려 합니다.

Python 스킬을 가진 개발자의 ID, 이메일, 이름, 성을 조회하는 SQL 문을 작성해 주세요.

결과는 ID를 기준으로 오름차순 정렬해 주세요.


<풀이코드>

SELECT ID,
	EMAIL,
    FIRST_NAME,
    LAST_NAEM
FROM DEVELOPER_INFOS
WHERE 'Python' IN(SKILL_1, SKILL_2, SKILL_3)
ORDER BY ID;

<설명>

  • WHERE 'Python' IN(SKILL_1, SKILL_2, SKILL_3)
    • SKILL_1, SKILL_2, SKILL_3 컬럼 중에 하나라도 'Python' 이 있는지 확인하는 조건절

[IN/NOT IN 연산자] : 지정된 값 목록 중 하나라도 일치하는/일치하지 않는 모든 행 검색

<기본 형식>

WHERE column_name IN (value1, value2, value3,...);
WHERE column_name NOT IN (value1, value2, value3,...);
WHERE value1 IN (column_name1, column_name2, column_name3,..)

-> 이것도 가능은 함! (하지만 이 경우 OR로 적는게 정석)

IN -> OR로 변환가능(반대는 불가능)
따라서 답은

WHERE 'Python' IN(SKILL_1, SKILL_2, SKILL_3);

또는

WHERE SKILL_1 = 'Python' OR SKILL_2 = 'Python' OR SKILL_3 = 'Python';

다른 WHERE절 연산자>

  1. IS NULL/IS NOT NULL
WHERE 컬럼명 IS NULL;

-> NULL을 검색할때

WHERE 컬럼명 IS NOT NULL;

-> NULL을 제외하고 검색할때

  1. BETWEEN
WHERE 컬럼 BETWEEN1 AND2;

또는

WHERE 컬럼 >=1 AND 컬럼 <=2;
  1. LIKE
WHERE 컬럼 LIKE '패턴'
  • % : 0개 이상의 문자열
  • _ : 특정위치의 1개 문자
  • [] : 1개의 문자와 일치
    ex) LIKE '[ABCD]%' -> 첫번째 문자가 A 또는 B 또는 C 또는 D인 문자열과 일치하는 문자열 검색
  • [^] : 1개의 문자와 불일치

profile
fun coding

0개의 댓글