728x90
상황 : 신규 DATE TYPE의 컬럼 추가 이후 신규 컬럼에 Key별로 각기 다른 값을 update 해야 하는 상황
과거 신입때는 select 후 모든 데이터를 내려 받은 후 update문을 만들어 맵핑 작업을 했던 경험이 있고
데이터를 불러들여 엑셀 입력하듯 하는 방법은 있으나 한번에 50row 밖에 붙여넣기가 안되는 상황 발생
엑셀로 update문을 만들기는 귀찮고 developer를 통해 업데이트를 하자니 한번에 50개밖에 업데이트가 안되고
그런데 developer에 각 row별로 업데이트 치는 기능이 있는것을 보고 혹시 select insert 처럼 update도 select한 값을 각각 update 할 수 있을지 않을까 라는 합리적인 의심을 함
그래서 구글링을 한 결과 가능했다.
UPDATE
(
SELECT A.A_DT, B.B_DT
FROM A_TABLE A,
(
SELECT
A_KEY, MAX(B_DT) AS B_DT
FROM B_TABLE
GROUP BY A_KEY
) B
WHERE
A.A_KEY = B.A_KEY
AND A.A_CODE NOT IN ('1', '2', '3')
)
SET A_DT = B_DT
* 쿼리 설명 :
- A테이블의 A_DT (신규컬럼)
- A테이블과 B테이블의 KEY 컬럼: A_KEY
- A테이블의 A_KEY값과 B테이블의 A_KEY값이 매칭되는 B_DT의 최고 값을 A테이블의 A_DT에 업데이트
'ORACLE SQL' 카테고리의 다른 글
오라클 시노님(Synonym)이란? (0) | 2023.08.21 |
---|---|
피벗 쿼리를 작성해보자 (PIVOT TABLE QUERY) (0) | 2023.07.31 |
ORACLE) SPLIT 함수 만들기 (0) | 2022.08.23 |
LISTAGG 문자열 연결의 결과가 너무 깁니다 에러 발생시 (0) | 2022.06.15 |
java에서 ibatis 프로시져 호출(실행) (0) | 2021.12.24 |