같은 테이블내의 데이터를 복사해서 insert하고싶습니다.

같은 테이블내의 데이터를 복사해서 insert하고싶습니다.

QA

같은 테이블내의 데이터를 복사해서 insert하고싶습니다.

답변 2

본문

g5_member 테이블에서

mb_no mb_id mb_name mb_key
1 admin 관리자 aaa
2 test 테스트 aaa

 

만약 이런식의 테이블이 있다고 가정을 한다면

1번째 행에있는 admin, 관리자, aaa의 값중에서 admin, 관리자 이렇게값만 가지고

아래의 3번째 행으로 insert를 하고싶습니다.

단순하게 select * from 해서 테이블의 행을 읽어오고 다시 insert문으로 하면 되지만

그렇게 하는 방법말고 혹시 mysql에서 바로 할수있을까요??

 

mb_no mb_id mb_name mb_key
1 admin 관리자 aaa
2 test 테스트 aaa
3 admin 관리자 bbbbb

이런식으로 mb_id='admin' and mb_key='aaa' 이행의 모든 정보를 같은 테이블에 insert하는데

마지막의 mb_key값만 제가 원하는 값을 넣고싶습니다.

위의 표와같이 bbbbb 같은식으루요 나머지 모든 행은 복사되고 insert되지만

특정 필드만 제가 작성하여 넣는 방법이있을까요??

아 그리고 mb_no는 auto_increment 자동증가입니다.

이 질문에 댓글 쓰기 :

답변 2

필드가 40-50 개 라면 임시 테이블을 사용하는 방법이 있습니다.

 

member 테이블과 똑같은 구조의 임시 테이블 member_tmp 를 만듭니다.

일단 작업을 하기 전에 start transaction 으로 트랜잭션을 선언하고

해당 임시테이블을 지웁니다. 그리고 select 한걸 그대로 memeber_tmp 로 넣는겁니다.

그런다음 해당 key 값을 바꾸고

member_tmp 의 내용 그대로 insert  를 합니다.

그리고 commit 을 선언하여 트랜잭션을 종료합니다.

추가로 이런 작업은 통상 프로시져로 처리하는게 간단하지요 ^^

INSERT INTO g5_member (mb_id, mb_name, mb_key) SELECT mb_id, mb_name, 'bbbbb' as mb_key FROM g5_member WHERE mb_id='admin';

답변감사합니다 ㅠㅠ 제가 설명이 조금 부족했던 모양입니다 ㅠㅠ
해당 테이블은 예시인데 실제 member 테이블의 필드는 수십개가 있다보니
그것을 모두 나열하여 가져오기가 힘들어서 질문을 남겼습니다 ㅠㅠ
필드, 2,3개정도면 말씀해주신 방식으로 가능하지만 필드가 40~50개가 되다보니
그중 하나의 값만 제가 원하는 값을 넣고싶은 의도입니다.
답변감사합니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 1,178
© SIRSOFT
현재 페이지 제일 처음으로