반응형

mysql 사용 도중 code의 값이 꼬여서 다른 테이블에 존재하는 code값을 읽어와

pk값이 같은 데이터끼리 update를 해줄 일이 생겼다.

 

일반적인 조건문에 따른 update처리는 해봤지만 join문이 들어간 update를 찾아보니

set전에 일반적인 select의 join문을 사용하면 되는 것을 확인하였다.

 

Join문을 활용한 Update

update 
	table1 t1
	[INNER JOIN | LEFT OUTER JOIN] table2 t2
	on t1.joinColumn = t2.joinColumn
set
	t1.changeColumn = t2.changeColumn
where
	t1.의 조건문
	and t2.의 조건문

 

위 와 같은 문법을 활용하여 update를 처리하면 된다.

 

 

사용예시)

r_board와 r_board_detail 테이블이 있다고 가정하겠다.

r_board

d_no

d_code

d_title

d_name

1

2

테스트1

홍길동

2

2

테스트2

홍길자

3

2

테스트3

홍길순

4

2

테스트4

홍길준

 

r_board_detail

d_no

d_code

d_read

d_update_dt

1

1

50

2020-01-22 09:10:23

2

1

65

2020-01-22 09:15:42

3

2

43

2020-01-22 12:09:55

4

2

55

2020-01-22 14:10:01

 

 

r_board code값을 일치시키는 update문을 구성하겠다.

update 
	r_board b1
    	INNER JOIN r_board_detail b2
	on b1.d_no = b2.d_no
set
	b1.d_code = b2.d_code

 

처리 후에는 r_board의 code값이 r_board_detail 테이블과 동일하게 바뀐 모습을 볼 수 있다.

반응형