같은 테이블 내에서 이미 존재하는 데이터를 한 번 더 삽입(또는 수정)해야 하는 경우가 간혹 생긴다.
어떻게 해야 할 지 버벅거리지 않기 위해 정리해둔다.
SELECT한 내용을 그대로 다 INSERT
INSERT INTO 테이블명 SELECT * FROM 테이블명 WHERE 조건;
보통 PK가 있으므로 원하는 컬럼만 SELECT 해서 INSERT 하게 된다.
원하는 컬럼만 SELECT해서 INSERT
INSERT INTO 테이블명 (컬럼1, 컬럼2, 컬럼3...) SELECT (컬럼1, 컬럼2, 컬럼3) FROM 테이블명 WHERE 조건;
SELECT한 내용을 그대로 다 UPDATE
솔직히 진짜 번거롭다 꼭 UPDATE가 필요한 상황이 아니라면 차라리 SELECT 결과를 한 번 더 INSERT해서 그 값을 수정하는 게 편할지도.
UPDATE 테이블명
SET 수정할컬럼 = (SELECT * FROM(
SELECT 가져올값이있는컬럼 FROM 테이블명 WHERE 가져올값이있는컬럼의조건) as A )
WHERE 수정할컬럼의조건;
이렇게 설명해놓으니까 오히려 복잡해 보여서 예제도 같이 써 둔다.
UPDATE test_tbl
SET subject = (SELECT * FROM(
SELECT subject FROM test_tbl WHERE bno = 1) as A )
WHERE bno = 101;
test_tbl에서 1번글의 subject를 조회해서, 101번 글의 subject에도 덮어씌우는 예제다.
SET subject =
부분에 바로 SELECT문을 넣을 수 없어서 한 번 감싸준다.