MySQL CASE 사용법
MySQL CASE문은 프로그래밍 언어에서 스위치(switch)문과 비슷하지만,
다수의 조건에 하나의 반환 값은 동작하지 않습니다.
CASE
WHEN 조건
THEN '반환 값'
WHEN 조건
THEN '반환 값'
ELSE 'WHEN 조건에 해당 안되는 경우 반환 값'
END
- WHEN과 THEN은 커플이어야 합니다.
- WHEN과 THEN은 여러번 사용가능합니다.
- ELSE가 존재하면 모든 조건에 해당하지 않는 경우에 반환 값을 설정할 수 있습니다.
- ELSE가 없고 조건에 맞지 않으면 NULL값으로 반환합니다.
쿼리ex)
SELECT
idx,
CASE
WHEN type = '1'
THEN '의사'
WHEN type = '2'
THEN '장군'
WHEN type = '3'
THEN '왕'
ELSE '일반인'
END AS hero_type,
name
FROM hero_collection;
SELECT GROUP_CONCAT(묶을 컬럼 [, 데이터1, 데이터2 ...]) FROM 테이블명 [WHERE 조건];
- 데이터1, 데이터2 등이 있으면, 컬럼 값에 추가로 데이터를 붙인 다음에 묶습니다.
쿼리
SELECT GROUP_CONCAT(name, ":", type) AS hero_string FROM hero_collection;
MySQL 테이블 정렬 (ORDER BY)
테이블에서 SELECT로 데이터를 조회할 때, ORDER BY를 추가하여 지정된 컬럼을 기준으로 정렬 할 수 있습니다.
정렬방법
1. 오름차순(ASC) 또는
2. 내림차순(DESC) 두 가지 정렬 방법이 있습니다.
Default value는 오름차순(ASC)입니다. (ASC 또는 DESC를 입력하지 않은 경우 ASC로 기본적으로 정렬합니다.)
*컬럼명이아닌 컬럼 번호로 정렬을 지정할 수도 있습니다.
*현재 조회한 컬럼을 기준으로 1번으로 시작합니다.
정렬하지 않은 경우
SELECT * FROM 테이블;
오름차순 정렬
SELECT * FROM 테이블 ORDER BY 컬럼1 ASC;
오름차순 정렬 (Default value)
SELECT * FROM 테이블 ORDER BY 컬럼1;
내림차순 정렬
SELECT * FROM 테이블 ORDER BY 컬럼1 DESC;
여러 컬럼으로 정렬
SELECT * FROM 테이블 ORDER BY 컬럼1 [, 컬럼2, 컬럼3 ...];
조건식이 있는 경우 정렬
SELECT * FROM 테이블 WHERE 조건식 ORDER BY 컬럼1 [, 컬럼2, 컬럼3 ...];
컬럼 번호로 정렬
SELECT * FROM 테이블 WHERE 조건식 ORDER BY 컬럼 번호1 [, 컬럼 번호2, 컬럼 번호3 ...];
예제 쿼리 (Example Query)
age 오름차순 정렬(Default value)
SELECT name, age FROM table_name ORDER BY age;
age 오름차순 정렬
SELECT name, age FROM table_name ORDER BY age ASC;
age 내림차순 정렬
SELECT name, age FROM table_name ORDER BY age DESC;
age 내림차순, name 오름차순 정렬
SELECT name, age FROM table_name ORDER BY age DESC, name;
age 내림차순, name 오름차순 정렬 (컬럼 번호로 정렬)
SELECT name, age FROM table_name ORDER BY 2 DESC, 3;
조건식이 있는 경우 age 내림차순
SELECT name, age FROM table_name WHERE age < 30 ORDER BY age DESC;