SQL

sub query

c29130811 2021. 5. 27. 01:00

서브 쿼리(Sub query)는 하나의 쿼리안에 포함되어 있는 또 다른 쿼리문을 말한다.

서브 쿼리는 메인 쿼리가 서브 쿼리를 포함하는 종속적인 관계로, 여러 쿼리를 수행할 결과를 중첩시켜 간편하게 결과을 얻을 수 있다.

 

또한 아래 같은 특징이 있다. 

  • 서브 쿼리는 여러개 사용 가능하다.
  • 서브 쿼리는 () 를 통해 사용한다. 
  • 서브 쿼리는 SELECT, FROM, WHERE 절 모두 사용이 가능하며, SELECT를 제외한 INSRT INTO, UPDATE 등에서도 사용이 가능하다.
  • 서브 쿼리안에 ORDER BY 절이 들어가면 안된다. 

users

id name address
1 lee seoul
2 park incheon
... ... ...

posts

id user_id content
1 1 side dish
2 1 camera
3 2 computer
4 2 keyboard
... ... ...

SELECT 에서의 서브 쿼리 

스칼라 서브쿼리(Scalar subqueries)라고 불린다.

select에서의 서브 쿼리를 쓸 경우, 서브 쿼리의 반환된 값은 하나여야만 한다. 

SELECT id, content, (SELECT name from users WHERE users.id = posts.user_id) name 
	FROM posts;

 

id content name
1 side dish lee
2 camera lee
3 computer park
4 keyboard park


FROM 에서의 서브 쿼리

인 라인뷰(inline views)라고 불린다. 

FROM 절에 사용된 서브쿼리의 결과가 하나의 테이블 처럼 사용된다.

반환 값이 여러개여도 상관 없음

SELECT u.name, p.content, u.address FROM users u, 
	(SELECT id, user_id, content FROM posts) p
WHERE p.user_id = u.id;

 

 

name content address
lee side dish seoul
lee camera seoul
park computer incheon
park keyboard incheon

WHERE 에서의 서브 쿼리

일반 서브 쿼리며, WHERE 절에서 사용하여 조건을 걸수가 있다. 

SELECT * 
FROM POSTS 
WHERE user_id IN (SELECT ID FROM users WHERE name = 'lee');

 

id user_id content
1 1 side dish
2 1 camera

SELECT나 WHERE에서나 많이 썻지, FROM에서는 많이 써보진 않은거 같은데, 

이제서야 정리하면서 개념을 다시 배워간다. 

728x90

'SQL' 카테고리의 다른 글

INSERT INTO SELECT  (1) 2021.06.06
INSERT INTO ... VALUES  (0) 2021.05.30
CHAR_LENGTH  (0) 2021.05.24
DISTINCT  (0) 2021.05.23
SELECT.. FROM.. WHERE  (0) 2021.05.23