[SQL] INSERT INTO SELECT - 특정 값 변경해서 넣기

haremeat·2022년 7월 13일
1

DB

목록 보기
1/3
post-custom-banner

목표

SELECT로 가져온 값을 복사해서 값만 조금 바꾸고 INSERT를 하고 싶다.

최근 특정 데이터를 그대로 복사해서 넣어야 하는데 그 중 일부 데이터만 조작해서 넣어달라는 요청이 들어왔다.

그럴 땐 아래와 같이 쿼리를 짜면 된다.

해결법

INSERT INTO table1 (category, data, collector_id, log_id, created, measured)
    SELECT category, data, collector_id, 2505, created, measured
    FROM table1 where log_id = 2415;

위 쿼리문을 보면 알겠지만 나는 같은 테이블(table1)에 데이터를 복사해서 신규 등록해야 하는 상황이었다.
나머지 칼럼을 값 그대로 가되 log_id만 2505로 바꾸고 싶었기 때문에 위처럼 log_id가 들어가야 하는 부분에 2505값을 그대로 박았다.

해석하면 2415라는 log_id를 가진 table1의 값이 2505라는 log_id를 가진 값으로 그대로 복사되어 새로 생성되는 것이다.

datetime N일 뒤로 바꾸기

옮긴 데이터에서 measured 부분을 1일 뒤로 일괄 변경해야 하는 일이 생겨서 추가로 작성한 쿼리문이다.

update table1 set measured = measured + interval '1 day' where log_id = 2505

1년 뒤로 바꾸고 싶으면 '1 year'를 붙여도 되고 다양하게 활용 가능하다.

Ref

profile
버그와 함께하는 삶
post-custom-banner

0개의 댓글