상세 컨텐츠

본문 제목

[개념]with과 recursive

백앤드 개발 노트

by bydawn25 2021. 1. 3. 19:32

본문

프로그래머스 SQL 테스트를 쫌쫌따리 해보다가 못보던 개념을 발견했다 ㅎㅎ

 

참고

 

MySQL 8.0 Labs: [Recursive] Common Table Expressions in MySQL (CTEs), Part Three – hierarchies - MySQL Server Blog

[Update of April 2017: the features discussed here are now also available in the official release 8.0.1 of MySQL. And this series of posts has been continued, here.] Here is the third in a series of posts about CTEs, a new feature of MySQL 8.0, available i

mysqlserverteam.com

                        

프로그래머스 문제

 

코딩테스트 연습 - 입양 시각 구하기(2)

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물

programmers.co.kr

 

CTE란?

Common table expression의 약자로 공식 다큐먼트와 다르게 나는 가상의 테이블을 만드는것으로 이해 하였다. virtual table을 만들어 다양한 연산을 가능하게 한것으로 보인다.

 

예를 들어

WITH cte AS #새로운 테이블을 만든다
(
SELECT 1 AS col1, 2 AS col2 #첫번째 열을 1,2로 설정
UNION ALL #UNION부분은 필수로 들어가야 한다고 한다
SELECT 3,4 #3,4를 아래에다가 같다가 붙여라
)
SELECT col1, col2 FROM cte;
col1  col2
1 2
3 4

이런식으로 사용되는것 같다.

 

 

저기 SELECT 3,4 아래에 FROM cte WHERE col1 < 23을 하면 반복문처럼 쓸수 있는듯 하다

SELECT 1 AS col1
UNION ALL
SELECT col1+1 #이 부분을 활용하면 규칙적인 테이블을 만들 수 있다 왕 신기
FROM cte #자신을 참조하려면 WITH RECURSIVE cte AS 구문을 사용해야 한다
where col < 6
col1
1
2
3
4
5
6

 

관련글 더보기