MSSQL INSERT INTO SELECT – SELECT 와 동시에 INSERT 하기
MS SQL에서 SELECT 쿼리 결과 데이터를 특정 테이블에 저장(INSERT)할 경우가 빈번하게 발생합니다. INSERT INTO… SELECT 구문으로 SELECT 쿼리 결과 데이터를 저장할 수 있습니다.
그럼 간단한 예제를 통해서 INSERT INTO SELECT 에 대해서 알아보죠.
포스트 기준
– Microsoft SQL Server 2019
– SSMS 18.10
1. 테이블 예시
-- 학생정보 (총 3건)
-- 학번, 성명, 학과, 학년
SELECT * FROM BS_DEMO_8_1
-- 과목정보 (총 3건)
-- 과목코드, 과목명
SELECT * FROM BS_DEMO_8_2
-- 점수정보 (총 9건)
-- 학번, 과목코드, 점수
SELECT * FROM BS_DEMO_8_3
![테이블 예시](https://bluesharehub.com/wp-content/uploads/2022/03/img_1-6.png)
![테이블 예시](https://bluesharehub.com/wp-content/uploads/2022/03/img_1-6.png)
2. INSERT INTO SELECT 예제
1. 예제 1)
-- 쿼리 결과 데이터를 BS_DEMO_8_4(테이블)에 저장한다.
INSERT INTO BS_DEMO_8_4
SELECT B.P_ID, B.NAME, B.DEPART, B.GRADE, C.S_ID, C.SUBJECT, A.SCORE
FROM BS_DEMO_8_3 A
INNER JOIN BS_DEMO_8_1 B ON A.P_ID = B.P_ID
INNER JOIN BS_DEMO_8_2 C ON A.S_ID = C.S_ID
ORDER BY B.P_ID, C.S_ID
-- 저장된 데이터 확인
SELECT *
FROM BS_DEMO_8_4
![INSERT INTO SELECT 예제 1](https://bluesharehub.com/wp-content/uploads/2022/03/img_2-6.png)
![INSERT INTO SELECT 예제 1](https://bluesharehub.com/wp-content/uploads/2022/03/img_2-6.png)
2. 예제 2)
-- 쿼리 결과 데이터를 BS_DEMO_8_5(테이블)에 저장한다.
INSERT INTO BS_DEMO_8_5
SELECT A.P_ID,
A.NAME,
A.DEPART,
A.GRADE,
-- 국어점수
(SELECT SCORE FROM BS_DEMO_8_3
WHERE P_ID = A.P_ID
AND S_ID = 'A01'),
-- 영어점수
(SELECT SCORE FROM BS_DEMO_8_3
WHERE P_ID = A.P_ID
AND S_ID = 'A02'),
-- 수학점수
(SELECT SCORE FROM BS_DEMO_8_3
WHERE P_ID = A.P_ID
AND S_ID = 'A03'),
-- 평균점수
(SELECT SUM(SCORE) / COUNT(*) FROM BS_DEMO_8_3
WHERE P_ID = A.P_ID)
FROM BS_DEMO_8_1 A
ORDER BY 1
-- 저장된 데이터 확인
SELECT *
FROM BS_DEMO_8_5
![INSERT INTO SELECT 예제 2](https://bluesharehub.com/wp-content/uploads/2022/03/img_3-6.png)
![INSERT INTO SELECT 예제 2](https://bluesharehub.com/wp-content/uploads/2022/03/img_3-6.png)
이 글이 도움이 되셨다면 공유를 부탁드립니다. 다음 글에서 뵙겠습니다!