개발일지

SQL TIL 4주차 : Subquery, 그 외

이경욱 2023. 10. 11. 15:40

SELECT * FROM users u

WHERE user_id in (

   SELECT user_id FROM orders o

   WHERE payment_method = 'kakaopay'

)

Subquery 란?

쿼리문 안에 들어가는 명령을 말함

()로 묶어서 사용하고, 줄바꿈을 해야 구분이 쉽다.

SELECT, FROM, WHERE 등 어디나 들어가도 가능하다.

 

WHERE 절 안에는 in을 사용해야 한다

 

SELECT pu.user_id , pu.point, a.avg_likes FROM point_users pu

INNER JOIN (

SELECT user_id , ROUND(AVG(likes),1) as avg_likes FROM checkins c

GROUP BY user_id

) a on pu.user_id = a.user_id

마치 원래 있었던 테이블처럼 사용하는게 서브쿼리이다.

각 쿼리를 따로 만들고 서로 JOIN 하는 방식으로 사용해도 된다.

 

SELECT c.checkin_id, c2.title , c.course_id, c.user_id, c.likes,

(

SELECT ROUND(AVG(likes),1) FROM checkins

WHERE course_id = c.course_id

) as course_avg

FROM checkins c

INNER JOIN courses c2 on c.course_id = c2.course_id

위에서 컬럼을 셀렉한 후에 아래 서브쿼리에서 대입하며 매칭시킬 수 있다.

마치 JOIN 과 같은 느낌이 되는건가?

 

 

 

 

 

 

With 구문으로 간단하게 만들기