select 쿼리안의 select 쿼리 서브쿼리라 한다.
서브 쿼리 3가지 종류
1. 서브 쿼리
where절에 들어가는 서브쿼리
```
select user_id from image_tb where content = ‘여행사진’;
+select username from user_tb where id = 1;
=
select username from user_tb where id =
(select user_id from image_tb where content = ‘여행사진’)
;
select max(id) from user_tb;
+select username from user_tb where id = 3;
=
select username from user_tb where id =
(select max(id) from user_tb)
;
2. inline view
from절에 들어가는 서브쿼리
테이블화 시킬 수 있음 → join이 매우 편해짐
select image_id,count() love_count from love_tb where image_id = 1 union all select image_id,count() from love_tb where image_id = 2 union all select image_id,count(*) from love_tb where image_id = 3;
→ join
select * from ( select image_id,count(*) love_count from love_tb where image_id = 1 union all select image_id,count(*) from love_tb where image_id = 2 union all select image_id,count(*) from love_tb where image_id = 3 ) mylove_tb inner join image_tb im on im.id = mylove_tb.image_id;
3. scala 서브 쿼리
프로젝션 절에 select를 한번 더 쓰는 것
scala 서브 쿼리는 결과가 반드시 하나의 행이어야 한다.
select *, (select count(*) from love_tb where image_id = im.id) from image_tb im;
Share article