반응형
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 테이블과 동일하게 바뀐 모습을 볼 수 있다.
반응형
'Databases > Mysql' 카테고리의 다른 글
Mysql - Group by한 데이터들의 마지막(최신) 값만 가져오기 (4) | 2020.02.10 |
---|---|
Mysql - date_format 사용하기 포맷형태(%Y-%m-%d) (0) | 2020.02.06 |
Mysql - Insert하는 데이터의 PK값이 있으면 update 처리하기 ON DUPLICATE KEY UPDATE (0) | 2020.01.21 |
Mysql - 접근중인 세션, 접속자 확인하기 (0) | 2020.01.15 |
Mysql - Could not get JDBC Connection; nested exception is java.sql.SQLException(톰캣 mysql 연결 에러, 용량문제) (0) | 2019.12.16 |