Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 실행 컨텍스트
- NoSQL
- github
- 정처기
- Redis
- 레디스
- 다이나믹프로그래밍
- 동적계획법
- 정보처리기사
- Spring Boot
- 호이스팅
- 스프링 시큐리티
- 스프링부트
- MongoDB
- 이벤트루프
- 분할정복
- 스프링 부트
- SQL
- 영속성 컨텍스트
- 캐시
- JPA
- 게시판
- document database
- VMware
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- sqld
- 깃허브
- spring security
- in-memory
- 자바의 정석
Archives
- Today
- Total
FreeHand
[MySQL] WITH절과 CTE 본문
WITH절은 CTE(Common Table Expression)를 표현하기 위한 구문으로 MySQL 8.0부터 사용할 수 있다.
CTE는 재귀적 CTE와 비재귀적 CTE가 있다. 지금은 비재귀적 CTE를 알아본다.
비재귀적 CTE 형식
WITH CTE_테이블(칼럼)
AS
(
<쿼리문>
)
SELECT 칼럼 FROM CTE_테이블;
SELECT 외에 UPDATE 등도 가능하지만 주로 SELECT문을 사용한다.
사용 예
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 |