중복 제거하기

정소이·2023년 1월 13일
0

코딩테스트

목록 보기
7/10

서브쿼리 : SQL문 속에 또다른 SQL문!

서브쿼리는 쿼리 안에 있는 또다른 select 쿼리다.

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

이 예에서 SELECT * FROM t1 ... 은 바깥 쿼리이고,
(SELECT column1 FROM t2) 이게 서브쿼리다.
서브쿼리 안에 서브쿼리 안에 서브쿼리가 계속 들어갈 수 있다!

서브쿼리의 장점으로는
1. 각 SQL문의 부분을 분리해서 구조화할 수 있다.
2. JOIN이나 UNION 처럼 복잡한 작업을 대체할 수 있다.
3. 사람들이 읽기 쉽다고 생각한다.

아래는 SQL표준으로 지정된 서브쿼리에 대한 예시다.

DELETE FROM t1
WHERE s11 > ANY
 (SELECT COUNT(*) /* no hint */ FROM t2
  WHERE NOT EXISTS
   (SELECT * FROM t3
    WHERE ROW(5*t2.s1,77)=
     (SELECT 50,11*s1 FROM t4 UNION SELECT 50,77 FROM
      (SELECT * FROM t5) AS t5)));

서브쿼리를 사용할 수 있는 문은 다음과 같다.
SELECT, INSERT, UPDATE, DELETE, SET, DO

[출처]
https://dev.mysql.com/doc/refman/8.0/en/subqueries.html

SELECT COUNT(*)
FROM(
SELECT NAME 
FROM ANIMAL_INS
    WHERE NAME IS NOT NULL
GROUP BY NAME) AS ANIMAL_INS

profile
프로그래밍 학습에 왕도는 없다! 내가 컴퓨터를 닮아갈때까지!

0개의 댓글