MySQL 추가 기본 문법

lim1313·2021년 10월 13일
0

TILPLUS

목록 보기
33/40
post-custom-banner

CASE

CASE
	WHEN 조건
	THEN '반환 값'
	WHEN 조건
	THEN '반환 값'
	ELSE 'WHEN 조건에 해당 안되는 경우 반환 값'
END
  • WHEN과 THEN은 한쌍이어야 합니다.
  • WHEN과 THEN은 다수가 존재할 수 있습니다.
  • ELSE가 존재하면 모든 조건에 해당하지 않는 경우에 반환 값을 설정할 수 있습니다.
  • ELSE가 존재하지 않고, 조건에 맞지 않아서 반환 값이 없으면 NULL를 반환합니다.

case 예시

예시

SELECT
	idx,
    CASE
		WHEN type = '1'
		THEN '의사'
		WHEN type = '2'
		THEN '장군'
		WHEN type = '3'
		THEN '왕'
		ELSE '일반인'
	END AS hero_type,
	name
FROM hero_collection;

결과


SUBQUERY

서브쿼리란 하나의 SQL 문 안에 포함되어 있는 또 다른 SQL문이다.

SELECT CustomerId, CustomerId = (SELECT CustomerId FROM customers WHERE CustomerId = 2)
FROM customers
WHERE CustomerId < 6

IN, NOT IN

IN은 특정한 값이 서브쿼리에 있는지 확인할 수 있다.

SELECT *
FROM customers
WHERE CustomerId IN (SELECT CustomerId FROM customers WHERE CustomerId < 10)

서브쿼리에서는 'CustomerId' 가 10 이하인 데이터를 돌려주기 때문에, 최종 조회된 데이터의 'CustomerId'도 10 이하이다.

만약 IN 대신 NOT IN 을 사용한다면, 서브쿼리에서 조회된 10 미만을 제외한(10을 초과하는) 레코드를 조회


EXISTS

EXISTS 또는 NOT EXISTS는 돌려받은 서브쿼리에 존재하는 레코드를 확인.
만약 조회하려는 레코드가 존재한다면 참(TRUE)을, 그렇지 않은 경우에는 거짓(FALSE)을 리턴

SELECT EmployeeId
FROM employees e
WHERE EXISTS (
	SELECT 1
	FROM customers c
	WHERE c.SupportRepId = e.EmployeeId
	)
ORDER BY EmployeeId

서브쿼리로 customers 테이블의 'SupportRepId' 필드값과 employees 테이블의 'EmployeeId' 필드값을 비교해 일치하는 레코드들을 가져온다.


FROM

FROM에도 서브쿼리를 사용할 수 있다.

SELECT *
FROM (
	SELECT CustomerId
	FROM customers
	WHERE CustomerId < 10
	)

다음과 같이 쿼리문과 서브쿼리를 사용해 조회된 결과를 하나의 테이블이나 조회할 대상으로 지정해 사용할 수 있다.


참조)
https://extbrain.tistory.com/46

profile
start coding
post-custom-banner

0개의 댓글