1. WHERE 서브쿼리 이용하기
INSERT INTO TABLE NAME (COL1, COL2)
SELECT COL1, COL2 FROM TABLE NAME2
INSERT INTO TABLE NAME (COL1, COL2)
VALUES (SELECT COL1 FROM TABLE NAME2 WHERE COL1=1), (SELECT COL2FROM TABLE NAME2 WHERE COL1=1)
--INSERT INTO 함수에 SELECT를 넣어 서브쿼리이용가능
SELECT * FROM TABLE NAME
WHERE COL 1 = (SELECT COL 1 = FROM TABLE NAME WHERE COL NAME = '123')
SELECT * FROM TABLE NAME
WHERE COL 1 IN (SELECT COL 1 = FROM TABLE NAME WHERE COL NAME IN( '123', '234') )
-- WHERE IN으로 여러개 찾기
<3개의 테이블 조인>
SELECT
A. NAME
A. NUM
C.SYMBOL
C. COMPANY
C. YEAR
FROM TABLE NAME AS A
INNER JOIN TABLE NAME2 AS B ON A. NUM = B. NUM
INNER JOIN TABLE NAME3 AS C ON B.SYMBOL = C. SYOMBOL
WHERE A. COMPANY = 'CAR'
ORDER BY SYMBOL
----위의 함수를 IN으로 바꾸면 아래가 됨
SELECT
FROM TABLE NAME
WHERE SYMBOL IN ( -- 위의 상위 쿼리가 조회가 됨
SELECT SYMBOL
FROM TABLE NAME AS A
INNERJOIN TABLE NAME AS B ON A.NUM = B. NUM --- 1) 이 두개가 조인이 되어서
WHERE A. COMPANY NAME = 'CAR'
)
-- ANY의 서브쿼리
SELECT
FROM TABLE NAME
WHERE SYMBOL = ANY ( -- A,B,C중 하나라도 만족하면 골라서 테이블 조회됨
SELECT SYMBOL
FROM TABLE NAME AS A
WHERE SYMBOL IN ('A','B','C')
)
SELECT
FROM TABLE NAME
WHERE SYMBOL < ANY ( -- A,B,C보다 더 작은 것들이 나오게 됨
SELECT SYMBOL
FROM TABLE NAME AS A
WHERE SYMBOL IN ('A','B','C')
)
2. FROM 서브쿼리 이용하기
SELECT
A*, B*, C*
FROM TABLE NAME AS A
INNER JOIN TABLE NAME1 AS B ON A.NAME = B. NAME
INNER JOIN TABLE NAME2 AS C ON A.NAME = C.NAME
INNER JOIN TABLE NAME3 AS D ON C.NUM = D. NUM
WHERE A.NAME = '123'
AND B. DATE >= '2022-10-01'
AND B.DATE < '2023-01-01'
3. CTE : COMMON TABLE EXPRESSION 데이터베이스에 없는 테이블이 필요할 때 사용
WITH CTE TABLE NAME COL1
AS
(SELECT COL1
FROM TABLE NAME2 -- CTE바로 다음에 나오는 SELECT에서만 사용가능 (동일한 열의 개수를 가져야함)
)
SELECT COL1 FROM CTETABLE NAME
4. UNION 은 중복을 제거한 결과 / UNION ALL 은 중복을 포함한 결과 사용
WITH CTE_TABLE_1 (DATE, COL1, COL2)
AS
SELECT DATE, COL1, [CLOSE] FROM TABLE_2
WHERE DATE >= '2022-01-01' AND DATE <= '2022-02-01'
UNION ALL--UNTON ALL을 사용해서 모두 조회하는 쿼리
SELECT DATE, COL1,[CLOSE] FROM TABLE_2
WHERE DATE >= '2022-02-03' AND DATE <= '2022-03-02'
)
SELECT * FROM CTE_TABLE_1 WHERE COL1 = '123'
'공부이야기' 카테고리의 다른 글
SQL 공부하기3일차: JOIN-INNER, OUTER, CROSS, SELF (1) | 2023.07.25 |
---|---|
SQL공부하기 2일차 - 데이터베이스, 테이블 생성, ALTER, CREATE, DROP, INSERT, PARENT&CHILD (1) | 2023.07.20 |
SQL공부하기 1일차 - WHERE, COUNT, 와일드카드, GROUP BY, ORDER BY (1) | 2023.07.20 |