Mssql
[Mssql] Join한 값 Insert, Join한 값 Update
wave_m
2021. 3. 8. 23:03
728x90
[TABLE_1]
UNIVERSITY_NO | MAJOR_NO |
대학교 코드 | 학과 코드 |
[TABLE_2]
PEOPLE_NO | USE_YN |
학생 코드 | 등록 여부 |
[TABLE_3]
PEOPLE_NO | MAJOR_NO | UNIVERSITY_NO | USE_YN | MOD_DT | COURSE_CREDIT |
학생 코드 | 학과 코드 | 대학교 코드 | 등록 여부 | 수정일시 | 들은 학점 |
=> 새로 입학한 학생의 JOIN을 사용하여 TABLE에 추가 혹은 수정(COURSE_CREDIT을 0으로 초기화)
- JOIN 한 값을 INSERT 해야 하는 경우
INSERT INTO TABLE_3 (
PEOPLE_NO
, MAJOR_NO
, UNIVERCITY_NO
, USE_YN
, MOD_DT
, COURSE_CREDIT
)
SELECT
B.PEOPLE_NO
, A.MAJOR_NO
, A.UNIVERCITY_NO
, B.USE_YN
, GETDATE() AS MOD_DT
, 0 AS COURSE_CREDIT
FROM TABLE_2 A
INNER JOIN TABLE_1 B ON 1=1
- JOIN 한 값을 UPDATE 해야 하는 경우
UPDATE TABLE_3
SET PEOPLE_NO = SUB1.PEOPLE_NO
, MAJOR_NO = SUB1.MAJOR_NO
, UNIVERCITY_NO = SUB1.UNIVERCITY_NO
, USE_YN = SUB1.USE_YN
, MOD_DT = SUB1.MODDT
, COURSE_CREDIT = SUB1.COURSE_CREDIT
FROM TABLE_3 MAIN1,
(SELECT B.PEOPLE_NO, A.MAJOR_NO, A.UNIVERCITY_NO, B.USE_YN, GETDATE() AS MODDT, 0 AS COURSE_CREDIT
FROM TABLE_2 A
INNER JOIN TABLE_1 B ON 1=1) SUB1
WHERE MAIN1.PEOPLE_NO = SUB1.PEOPLE_NO
AND MAIN1.MAJOR_NO = SUB1.MAJOR_NO
AND MAIN1.UNIVERCITY_NO = SUB1.UNIVERCITY_NO
※ 해당 테이블은 이해를 높이기 위해 임의로 작성한 테이블이기에 테이블을 구성하는 열이 이상할 수 있습니다.
참고만 해주세요 !
[ TIP ]
- SQL을 연습할 때 대문자로 연습하는 편이 좋습니다.
- 저의 임의의 테이블로 JOIN을 했기에 겹치는 값이 없었고 위의 코드처럼 ON 뒤에 조건을 1=1 이런 식으로 작성하면 무리 없이 코드가 작동되지만 이와 같이 개발하는 것은 지양하는 편이 좋습니다.
728x90