테스트 사이트 - 개발 중인 베타 버전입니다

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

훈훈훈훈훈 7년 전 조회 3,859

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개

채택된 답변
+20 포인트
7년 전

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

 

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

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

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

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

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

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

훈훈훈훈훈
7년 전
답변감사합니다!
프로시져라는게 어떤의미인가요 ㅠㅠ
나시
7년 전
헉.. 프로시져는 ..http://blog.duveen.me/12
이런 링크로 확인하실수 있습니다.

일단 님의 sql 지식을 확장하실수 있는 계기는 되겠네요 ^^

댓글을 작성하려면 로그인이 필요합니다.

7년 전

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';

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인