mysql 이중 case 문 입니다.
일반적으로 case문은 쿼리에서 if문처럼 사용됩니다.
일반 프로그램 처럼 if문 안에 if문을 사용하는 경우 mysql에서도 case 문 안에 case 문을 넣어 사용할수 있습니다.
예를 들면 도서 테이블에서 할인 여부를 판단 하고 할인이 된다면 할인율 조건에 맞게 값을 노출하는 경우 입니다.
아래는 예제 입니다. (자세한 내용은 주석을 참고하세요.)
select id, name, writer, genre, discount_yn, discount_rate, price, case discount_yn when 'N' then price #할인여부가 N 이라면 기본 책가격 else case when discount_rate != 0 then price - (price * discount_rate /100) #할인여부가 Y이며 할인율이 0이 아니라면 할인율 적용 else price - (price * 5 /100) #할인여부가 Y이며 할인율이 0이라면 기본할인율(5%) 적용 end end sale_price from books;
추가: 이번 예제에서 사용한 테이블 및 데이터
CREATE TABLE books ( id VARCHAR(5) NOT NULL, name VARCHAR(20) NOT NULL, writer VARCHAR(20) NOT NULL, price DECIMAL(10,2) DEFAULT 0, genre VARCHAR(20) NOT NULL, publisher VARCHAR(20) NOT NULL, discount_yn CHAR(1) NOT NULL, discount_rate DECIMAL(10,0) DEFAULT 0, cnt DECIMAL(10,0) DEFAULT 0, PRIMARY KEY (id) ); insert into books( id, name, writer, price, genre, publisher, discount_yn, discount_rate ) values ( 'a1', '홍길동전', '허균', 300, '소설', '허균 출판사', 'N', 0 ) on duplicate key update cnt = cnt+1; insert into books( id, name, writer, price, genre, publisher, discount_yn, discount_rate ) values ( 'b1', '레미제라블', '빅토르 위고', 900, '소설', '빅토르 위고 출판사', 'N', 0 ) on duplicate key update cnt = cnt+1; insert into books( id, name, writer, price, genre, publisher, discount_yn, discount_rate ) values ( 'b2', '백경', '허먼 멜빌', 1500, '소설', '허먼 멜빌 출판사', 'Y', 30 ) on duplicate key update cnt = cnt+1;
mysql 문자열 합치기, 자르기 (concat, substring) (0) | 2016.09.01 |
---|---|
mysql 컬럼 입력값 길이(사이즈, 글자수) 확인 (0) | 2016.09.01 |
case group by mysql (mysql group by case) (2) | 2016.08.09 |
mysql 컬럼 추가 (alter, 컬럼 변경, 컬럼 추가, 컬럼 삭제) (0) | 2016.06.30 |
Error 1064(42000) : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near (2) | 2016.06.20 |
댓글 영역