기존 테이블에 신규 필드가 추가되면서 해당 필드에 특정 값을 입력해줘야 하는 일이 생겼다.
그 값이라는 것 마저도 기존 데이터를 이용해서 할 수 있는 확정된 기준이 없고
요청자가 row 별로 원하는 데이터를 엑셀로 넘겨줘서 이를 이용해야 했다.
엑셀 데이터를 입력하는 일 마저도 난감했지만 여차저차 프로그램을 짜고 임시테이블에 데이터를 밀어넣어서, 이 임시 테이블을 맵핑해서 원하는 테이블의 필드값을 update 해야 했다.
이에 사용했던 쿼리문을 정리해보고자 한다.
SELECT JOIN 문을 이용한 UPDATE QUERY
dev.mysql.com 에서 제공하는 UPDATE Syntax 를 간략하게 표현하면
우리가 자주 사용하는 일반적인 UPDATE Query 문이 나온다.
UPDATE table_references
SET col_name1
={expr1
|DEFAULT} [, col_name2
={expr2
|DEFAULT}] ...
[WHERE where_condition
]
일반적으로는 어떤 조건에 맞는 하나의 테이블의 필드를 수정한다.
저 조건 값을 빼먹는 순간.. N rows updated 되면서 아주 망하는 수가 있으니
where 절은 왠만하면 한 번 더 확인해보는 습관을 들이자.
그리고 지금 포스팅에서 말하고자 하는 SELECT JOIN 문을 이용한
UPDATE Query 예시도 Mysql Documentation에서 제공하고 있다.
UPDATE 명령어도 여러 테이블에 적용할 수 있지만, ORDER BY 또는 LIMIT를 함께 사용할 수는 없다.
table_references 부분에 JOIN을 걸어줄 테이블 목록을 명시해 주면 된다.
UPDATE items,month -- JOIN을 걸어줄 테이블 목록
SET items.price=month.price -- items 테이블의 price 필드를 변경해준다.
WHERE items.id=month.id; -- JOIN 조건
위의 예시는 MySql에서 적용해 준 예시이고
WHERE 절을 안쓰더라도 JOIN의 일반적인 형태를 이용해서도
UPDATE Query를 작성할 수 있다.
UPDATE tbl_object a INNER JOIN temp_data b
ON a.seq = b.seq
SET col_name1
={expr1
|DEFAULT} [, col_name2
={expr2
|DEFAULT}] ...
[WHERE where_condition
]
위의 형태로 UPDATE Query를 작성하면 좀 더 활용방안이 많아질 듯 하다.
덕분에 큰 어려움 없이 데이터 매핑을 완료해서 오늘도 정시퇴근!
조만간 엑셀 데이터를 밀어넣었던 프로그램 짜는 내용도 공유를 해야할텐데...
필요한 라이브러리 정리하다가 포스팅 끝날 듯 ㅋ_ㅋ
3월도 벌써 하루밖에 안남았네.
2017년 1분기도 안녕!
'DataBase > MySQL, MariaDB' 카테고리의 다른 글
Commons DBCP 설정값 알아보기 (0) | 2018.08.06 |
---|---|
DB 전체에서 특정 필드를 찾아야 할 때 (0) | 2017.11.29 |
DML(Data Manipulation Language) - INSERT 사용에 대해서 (1) | 2011.07.07 |
MySQL Storage Engine의 양대산맥! MyISAM vs InnoDB (3) | 2011.03.31 |
WHERE 절의 IN 사용법! (0) | 2011.02.08 |