티스토리 뷰

반응형

질문 )

fileuploads 테이블의 요소는 아래와 같다.
id, tablename ,item, parentid, realname ,savename

위의 자료 중 
tablename이 'sillcover'이고 item이 'image'인 것을 찾아서

picuploads 테이블의 요소는 아래와 같다.
num,tablename,item,parentnum,picname

tablename은 똑같이 넣어주고, item도 마찬가지,
parennum = parentid, picname은 savename으로 행을 추가하는 sql 코드는?
ChatGPT의 말:
ChatGPT
fileuploads 테이블에서 조건에 맞는 데이터를 picuploads 테이블로 변환하여 추가하는 SQL 코드는 다음과 같습니다:


SQL 코드
INSERT INTO picuploads (tablename, item, parentnum, picname)
SELECT tablename, item, parentid, savename
FROM fileuploads
WHERE tablename = 'sillcover' AND item = 'image';
코드 설명
INSERT INTO ... SELECT

picuploads 테이블의 열에 fileuploads 테이블에서 선택한 데이터를 삽입합니다.
열 매핑 (위와 같이 하면 열이 매핑된다. 따로 A = B 이런 형태로 하지 않아도 되니 너무 좋다.)

tablename → tablename
item → item
parentid → parentnum
savename → picname
조건 추가

fileuploads 테이블에서 tablename = 'sillcover'이고 item = 'image'인 행만 선택하여 삽입합니다.
주의 사항
데이터 타입
fileuploads와 picuploads 테이블의 데이터 타입이 일치해야 합니다. 예를 들어, parentid와 parentnum 모두 동일한 데이터 타입이어야 오류가 발생하지 않습니다.

타입이 일치하지 않으면 이상한 것이 들어있는 데이터가 발생한다.^^

중복 데이터 방지
중복 데이터 삽입을 방지하려면, 삽입 전에 picuploads 테이블에서 해당 데이터가 이미 존재하는지 확인하거나 고유키 제약 조건을 활용하세요: (이건 잘 사용할지 모르겠다.)

INSERT INTO picuploads (tablename, item, parentnum, picname)
SELECT tablename, item, parentid, savename
FROM fileuploads
WHERE tablename = 'sillcover' AND item = 'image'
ON DUPLICATE KEY UPDATE picname = VALUES(picname);
위 코드에서 ON DUPLICATE KEY UPDATE를 사용하면 중복 키가 발생할 경우 기존 데이터를 업데이트합니다.

테스트
실제로 삽입하기 전에 SELECT 쿼리로 조건에 맞는 데이터를 미리 확인하는 것이 좋습니다:

SELECT tablename, item, parentid, savename
FROM fileuploads
WHERE tablename = 'sillcover' AND item = 'image';

반응형
댓글