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