FreeHand

[MySQL] WITH절과 CTE 본문

Database

[MySQL] WITH절과 CTE

Jinn 2023. 11. 5. 00:56

WITH절은 CTE(Common Table Expression)를 표현하기 위한 구문으로 MySQL 8.0부터 사용할 수 있다.

CTE는 재귀적 CTE와 비재귀적 CTE가 있다. 지금은 비재귀적 CTE를 알아본다.

 

비재귀적 CTE 형식
WITH CTE_테이블(칼럼)
AS
(
    <쿼리문>
)
SELECT 칼럼 FROM CTE_테이블;

SELECT 외에 UPDATE 등도 가능하지만 주로 SELECT문을 사용한다.

 

사용 예

buytbl 테이블

 

buytbl 테이블에서 총 구매액을 구하고, 총 구매액이 많은 순으로 정렬하려면 다음과 같이 해야 한다.

SELECT userID, SUM(price*amount) total
FROM buytbl
GROUP BY userID
ORDER BY SUM(price*amount) DESC;

정렬되기 전의 결과 테이블을 abc라는 테이블이라고 가정하면 다음과 같이 할 수 있다.

SELECT * FROM abc ORDER BY total DESC;

 

CTE를 사용하여 위처럼 조회할 수 있다.

WITH abc(userID, total)
AS
(
    SELECT userID, SUM(price*amount)
    FROM buytbl
    GROUP BY userID
)
SELECT * FROM abc ORDER BY total DESC;

 

CTE는 뷰와 비슷하지만 뷰와 달리 CTE는 SQL문이 끝나면 소멸된다.

 

'Database' 카테고리의 다른 글

[Redis] 처음 만난 레디스 1  (2) 2024.06.15
[MySQL] 데이터 타입과 형 변환  (0) 2023.11.05
[MySQL] DELETE  (0) 2023.11.01
[MySQL] UPDATE  (0) 2023.11.01
[MySQL] INSERT  (0) 2023.10.31