| INPUT_TBL | JUSO_TBL | ||
| 아이디 | JUSO_ID | JUSO_ID | |
| 시 | CITY | ---> | CITY |
| 구 | GU | ---> | GU |
| 동 | DONG | ---> | DONG |
| 번지 | BUNJI | ---> | BUNJI |
| 전체 | ALL |
질문) 위와 같이 테이블 두개가 있습니다.
주소테이블과 인풋테이블의 아이디가 같으면(주소테이블에 juso_id가 없으면 종료)
인풋테이블의 각 컬럽데이타를 주소테이블의 각 컬럽으로 update후
주소테이블의 각 컬럽을 모두 주소테이블의 "ALL"에 update하기 입니다.
아래 두 코드는 제가 만들어 본것인데요. 하나의 쿼리로 가능할까요?
그리고 아래 첫 코드는 2,3 행에서 에러가 발생하네요.
1 UPDATE juso_tbl c
2 SET c.city = input_tbl.city c.gu = input_tbl.gu c.dong = input_tbl.dong c.bunji = input_tbl.bunji
3 WHERE c.juso_id = input_tbl.juso_id
4 ;
1 UPDATE juso_tbl c
2 SET c.all = c.city || ' ' || c.gu || ' ' || c.dong || ' ' || c.bunji
3 WHERE juso_tbl.joso_id = input_tbl.juso_id
4 ;
2번째 업데이트 문은
where 조건에 input_tbl.juso_id 이게 문제 일듯 싶은데요
WHERE c.joso_id in (select juso_id from input_tbl)
이런식으로 해결 되지 않나요??
1번째꺼는 merge 문 사용하시면 편하실 거 같은데;
MERGE INTO juso_tbl juso_tbl c
USING (SELECT * FROM input_tbl) input_tbl
ON (c.juso_id = input_tbl.juso_id)
WHEN MATCHED THEN
UPDATE
SET c.city = input_tbl.city, c.gu = input_tbl.gu, c.dong = input_tbl.dong, c.bunji = input_tbl.bunji, c.all = c.city || ' ' || c.gu || ' ' || c.dong || ' ' || c.bunji;
대충 이런식?
저도 지식이 짧아서;;
먼저, 두 고수님께 감사드립니다.
질문 내용을 다시 수정했는데 봐주시겠어요?
| INPUT_TBL | JUSO_TBL | ||
| 아이디 | JUSO_ID | JUSO_ID | |
| 시 | CITY | ---> | CITY |
| 구 | GU | ---> | GU |
| 동 | DONG | ---> | DONG |
| 번지 | BUNJI | ---> | BUNJI |
| 기타 | GITA | ||
| 전체 | ALL |
질문) 위와 같이 테이블 두개가 있습니다.
주소테이블과 인풋테이블의 아이디가 같으면(주소테이블에 juso_id가 없는것은 UPDATE없음)
인풋테이블의 각 컬럼데이타를 주소테이블의 각 컬럼으로 update후
주소테이블의 CITY, GU, DONG, BUNJI, GITA 컬럼데이타를 주소테이블의 "ALL"에 update하기 입니다.
아래 두 코드는 제가 만들어 본것인데요. 하나의 쿼리로 가능할까요?
1 UPDATE juso_tbl c
2 SET c.city = input_tbl.city c.gu = input_tbl.gu c.dong = input_tbl.dong c.bunji = input_tbl.bunji
3 WHERE c.juso_id = input_tbl.juso_id
4 ;
1 UPDATE juso_tbl c
2 SET c.all = c.city || ' ' || c.gu || ' ' || c.dong || ' ' || c.bunji || ' ' || gita
3 WHERE juso_tbl.joso_id = input_tbl.juso_id
4 ;