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를 가진 값으로 그대로 복사되어 새로 생성되는 것이다.
옮긴 데이터에서 measured 부분을 1일 뒤로 일괄 변경해야 하는 일이 생겨서 추가로 작성한 쿼리문이다.
update table1 set measured = measured + interval '1 day' where log_id = 2505
1년 뒤로 바꾸고 싶으면 '1 year'를 붙여도 되고 다양하게 활용 가능하다.