[22/06/01] 서브쿼리

Que Lin·2022년 6월 1일

MS-SQL

목록 보기
9/11

서브쿼리

: 하나의 쿼리 안에 포함되어 있는 또 다른 쿼리

  • SELECT문에서는 GROUP BY절을 제외한 모든 절에서 사용 가능
    (SELECT절, FROM절(00), WHERE절(000), HAVING절, ORDER BY절)
    FROM절

예1) SELECT절

재생목록 코드가 S001인 강의의 중단기간 데이터(강의명, 재생목록코드, 강의코드, 시작일, 종료일)

중단기간 데이터

강의 데이터

SELECT 별칭1.[칼럼명], 별칭2.[칼럼명],..
FROM [테이블명] 별칭1
JOIN[테이블명2] 별칭2
ON 별칭1.[칼럼명] = 별칭2[칼럼명]

/* 테이블 생성 후 테이블 조인 방식 */
SELECT * INTO 강의데이터_S001
FROM [dbo].['강의 데이터$']
WHERE 재생목록코드 = 'S001'

SELECT A.강의명, A.재생목록코드, A.강의코드, B.시작일, B.종료일
FROM 강의데이터_S001 A
	LEFT JOIN [dbo].['중단기간 데이터$'] B
	ON A.강의코드 = B.강의코드

/* 서브쿼리 방식 */
SELECT A.강의명, A.재생목록코드, A.강의코드, B.시작일, B.종료일
FROM (SELECT * 
		FROM [dbo].['강의 데이터$']
		WHERE 재생목록코드 = 'S001') A
	LEFT JOIN [dbo].['중단기간 데이터$'] B
ON A.강의코드 = B.강의코드

예2) WHERE절

연산자(=, !=, >, >=, <, <=) : 서브쿼리 결과 1칼럼 1행
연산자(IN, ALL, ANY, SOME) : 서브쿼리 결과 1칼럼 1행 이상
🔅 IN (list) : list에 있는 값 중 하나라도 일치
재생목록코드가 S001인 강의의 중단기간 데이터 (강의코드, 시작일, 종료일)

SELECT *
FROM [dbo].['중단기간 데이터$']
WHERE 강의코드 IN(
	SELECT 강의코드
	FROM [dbo].['강의 데이터$']
	WHERE 재생목록코드='S001')
profile
1일 1커밋 1일 1벨로그!

0개의 댓글