본문 바로가기
데이터베이스/Mysql

[MySQL] SQL - 서브쿼리 , GROUP_CONCAT, 조건문

by 책 읽는 개발자_테드 2020. 2. 25.
반응형

 

개발을 하다 SQL의 새로운 기능들 알게되어 정리해봅니다.

서브쿼리

mysql 에서는 쿼리 내부에 또 다른 쿼리를 포함시켜 사용하여 기능을 확장할 수 있습니다.

 

EX) select cst_code, (select * from pet B where A.cst_code = B.cst_code) from reserve A

 

GROUP_CONCAT

mysql 에서는 데이터베이스에서 가져온 결과가 여러 행일 때, 이 행들을 합쳐서 하나의 필드로 만드는 기능이 있습니다.

아래 예시의 pet_type1, pet_type2 처럼 가져오기를 원하는 컬럼을 적고, 쉼표 뒤에 "원하는 문자" 에서 처럼 원하는 문자를 넣어 하나의 필드로 데이터를 합칠 수 있습니다.

 

select group_concat(pet_type1, "원하는 문자", pet_type2, "원하는 문자") from reserve

 

 

조건문

IFNULL

mysql 에서는 데이터베이스에서 가져온 결과가 null일 때 다른 데이터로 치환할 수 있는 기능을 제공합니다.

 

select cst_code, IFNULL((select * from pet B where A.cst_code = B.cst_code), "noValue") from reserve A

 

CASE

mysql에서는 복잡한 조건 구조를 구현하기 위해 CASE를 사용합니다.

case 선언문 오른쪽에 비교할 값(cst_code)를 할당하면, WHEN 절의 값(codevalue,codevalue2)과 비교하여 동등하면 THEN 절이 실행되고, 그렇지 않다면 ELSE 절이 실행됩니다.

마지막으로, END 선언문을 통해 CASE 선언문을 종료할 수 있습니다.

select cst_code,
CASE cst_code
	WHEN 'codeValue' THEN "test1"
	WHEN 'codeValue2' THEN "test2"
	ELSE "test3"
	END AS case_test
from reserve A

 

 

출처

https://dev.mysql.com/doc/refman/5.7/en/case.html

반응형

댓글