728x90
반응형
흐름제어
- CASE value
WHEN [compare_value1] THEN result1
WHEN [compare_value2] THEN result2…
ELSE result3
END
- CASE와 END로 이루어져있고, 원하는 조건내에 존재하지 않으면 ELSE문을 타고, ELSE문이 없을 경우 null을 return
실습
- post 테이블에서 id, title, contents, 그리고 author_id의 경우 author_type이라는 이름으로 조회
- author_id가 만약 1이면 first_author, 2이면 second_author로 조회가 되도록 하고 3 이상 그외의 경우 etc_authors로 조회하도록 하여라.
- case when 사용하여 출력
- if문 사용하여 동일하게 출력
SELECT id, title, contents,
case author_id
when 1 then 'First Author'
when 2 then 'Second Author'
ELSE 'Others'
end
as author_type from post;
- IF()
- IF(a, b, c)
- a는 조건, b는 참일경우 반환 값, c는 거짓일 경우 반환 값
- 만약 조건 a가 참이면 b를 반환하고, 거짓이면 c를 반환한다.
- SELECT IF(0<1, ‘yes’, ‘no’);
- 실습
- post 테이블에서 id, title, contents, 그리고 author_id의 경우 author_type이라는 이름으로 조회
- author_id가 만약 1이면 first_author, 그외의 경우 Others로 조회하도록 하여라.
- if문 사용하여 출력
SELECT id, title, contents, if (author_id=1, 'First Author', 'Others') as author_type from post;
- IFNULL(a,b)
- 만약 a의 값이 NULL이 아니면 a 그 자체를 반환하고, NULL이면 b를 반환
select id, title, contents, ifnull(author_id, 'anonymous') from post;
- if문으로 출력
select id, title, contents, if(author_id is null, 'anonymous', author_id) from post;
- 프로그래머스 sql 문제 풀이 (case when) - 조건에 부합하는 중고거래 상태 조회하기)
https://school.programmers.co.kr/learn/courses/30/lessons/164672
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, CASE STATUS WHEN 'SALE' THEN '판매중' WHEN 'RESERVED' THEN '예약중' WHEN 'DONE' THEN '거래완료' END AS STATUS FROM USED_GOODS_BOARD WHERE CREATED_DATE = '2022-10-05' ORDER BY BOARD_ID DESC;
- 프로그래머스 sql 문제 풀이(흐름제어(IF, IFNULL)- 12세 이하인 여자 환자 목록 출력하기)
https://school.programmers.co.kr/learn/courses/30/lessons/132201
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO FROM PATIENT WHERE AGE <= 12 AND GEND_CD = 'W' ORDER BY AGE DESC, PT_NAME ASC;
Uploaded by N2T
728x90
반응형
'Database' 카테고리의 다른 글
[MariaDB] JOIN (1) | 2023.11.22 |
---|---|
[MariaDB] 동시성 이슈 (1) | 2023.11.22 |
[MariaDB] 제약조건 (0) | 2023.11.22 |
[MariaDB] 연산자 (1) | 2023.11.22 |
[MariaDB] 데이터타입 (0) | 2023.11.22 |