사용자는 책을 구매하고 그에 대한 별점을 남길 수 있습니다.
별점이 남겨질 때마다 책의 평점은 변화합니다.
오늘은 별점의 평균을 구해줄 서브 쿼리에 대해서 이야기해보겠습니다.
🐸 서브 쿼리
간단하게 설명하자면 쿼리 안에 있는 쿼리를 의미합니다.
서브 쿼리는 괄호 안에 넣어서 작성하며
메인 쿼리의 컬럼을 사용할 수 있습니다.
🐸 서브 쿼리의 위치
서브 쿼리는 다양한 위치에서 사용할 수 있습니다.
하지만 FROM 절에서 사용할 때는 AS 예약어를 사용해서 별칭을 주어야 합니다.
- SELECT
- FROM
- WHERE
- HAVING
- ORDER BY
- VALUES
- UPDATE
🐸 적용 예시
책의 평점을 수정하는 쿼리는 간단합니다.
UPDATE book SET rating = 평점 WHERE id = 1;
이 평점을 우리는 서브 쿼리로 만들 수 있습니다.
SELECT AVG(rating) FROM review WHERE book_id = 1;
만들어진 쿼리를 괄호 안에 넣어서 완성합니다.
UPDATE book
SET rating = (
SELECT AVG(review.rating)
FROM review
WHERE book_id = 1
)
WHERE id = 1;
작성하면서 서브 쿼리의 반복이 많아지면 콜백 지옥처럼 서브 쿼리 지옥이 펼쳐진다고 느꼈습니다.😂
글을 끝까지 봐주셔서 감사합니다.
틀린 내용은 댓글로 지적 부탁드립니다.
'프로젝트' 카테고리의 다른 글
[What To Do] JWT 인가 미들웨어 제작하기 (0) | 2024.10.16 |
---|---|
[서점 프로젝트] SQL Error [1701] 해결하기 (1) | 2024.10.15 |
[서점 프로젝트] Offset 페이지네이션 (2) | 2024.10.07 |
[서점 프로젝트] 줄거리 설명 컬럼의 자료형 고민 (0) | 2024.10.04 |
[서점 프로젝트] ERD 설계 (1) | 2024.10.02 |