본문으로 바로가기

MySQL CASE

category 데이터베이스/MySQL 2018. 12. 27. 17:56

MySQL CASE

CASE는 If then else 문과 비슷합니다.

 

즉 첫 조건이 충족되면 값을 반환하고 처리합니다.

 

만약 조건이 충족되지않으면 else절에 들어가게 됩니다.

 

CASE

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE result

즉 CASE안에 WHEN절이 if라고 보시면 될것같습니다.

 

condition1이 만족하면 result1이고 그렇지않으면 else에 걸리게 되는거죠 .

 

이해를 돕고자 쉬운 예제를 보도록 하죠.
END;

이렇게 쓰입니다. C언어에서도 많이 봐왔기때문에 어려움은 없을 거에요.

OrderDetailID OrderID ProductID Quantity
1 10248 11 12
2 10248 42 10
3 10248 72 5
4 10249 14 9
5 10249 51 40

 

SELECT OrderID, Quantity,
CASE
    WHEN Quantity > 30 THEN "The quantity is greater than 30"
    WHEN Quantity = 30 THEN "The quantity is 30"
    ELSE "The quantity is under 30"
END AS QuantityText
FROM OrderDetails;

OrderID와 Quantity를 뽑는데 조건이 걸린겁니다. 즉 CASE안에 Quantity가 30 초과이면

 

"The quantity is greater than 30"을 출력하고 END를 만나 빠져나가게 됩니다.

 

마찬가지로 Quantity가 30일 경우 "The quantity is 30"을 출려갛고 30 미만이면 ELSE에 걸리게 되겠죠.

 

OrderID Quantity QuantityText
10248 12 The quantity is under 30
10248 10 The quantity is under 30
10248 5 The quantity is under 30
10249

40

The quantity is greater than 30

 

출력은 이렇게 될거에요.

 

 

SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
    WHEN City IS NULL THEN Country
    ELSE City
END);

이런 구문은 정렬을 CITY가 널이면 Country로 정렬하고 그렇지 않으면 CIty로 정렬한다는 뜻입니다.

 

 

'데이터베이스 > MySQL' 카테고리의 다른 글

MySQL 데이터베이스  (0) 2018.12.28
MySQL 저장 프로시저  (0) 2018.12.27
MySQL INSERT INTO SELECT  (0) 2018.12.27
MySQL 테이블 복사  (0) 2018.12.24
MySQL ANY/ALL  (1) 2018.12.24