[데이터 복사를 할 때 원본이 되는] A 라는 사람과 [데이터 복사를 할 때 새로 만들어지는] B라는 사람이 있고. <소유물 테이블> <번호 테이블> 이 있습니다. 지금 제가 하려는 것은 <소유물 테이블> <번호 테이블> 에 특정사람 A의 정보를 B라는 사람에게 모두 (10~20개) 덮어 씌우는 과정입니다.. B라는 사람은 이전에 값이 있기에 모두 DELETE 시킨 후에, <첫번째 쿼리문> INSERT INTO 소유물 테이블 (아이디컬럼, 컬럼2) SELECT 'B아이디', '컬럼2 FROM 소유물 테이블 WHERE 아이디 = 'A라는사람' 이렇게 B라는 사람의 정보를 A에 복사를 하였구요 (여기 까지는 모두 순조롭습니다.) 그 후에 번호를 복사시키는 과정에서 <두번째 쿼리문> INSERT INTO 번호테이블 (아이디컬럼, 컬럼2, 컬럼3, @특정번호@) SELECT 'B아이디', A.컬럼2, A.컬럼3, B.@특정번호@ FROM 번호테이블 as A inner join 소유물테이블 as B on @특정번호@ = @특정번호@ WHERE A.컬럼 = '문자열' 이런식으로 하였습니다만 위의 쿼리문은 [왼본이 되는] A라는 사람의 [번호테이블] 안에 있는 컬럼의 Index 컬럼의 값이 추가되고 있습니다. 저는 [복사가 되는 대상] B라는 사람이 복사된 [번호테이블] 안에 있는 (1씩 추가가 된) Index 컬럼의 값으로 복사를 하고 싶습니다. 다시 정리해서 여쭈어 본다면 첫번째로 복사를 했던 [소유물 테이블]의 A라는 사람의 모든 정보들의 [Index 칼럼]이 PK 값으로 되어있어서, (고유번호) 복사가 진행된 [소유물 테이블] 의 B라는 사람의 [Index 컬럼]은 A와 똑같이 복사가 되지 않고, 아시다시피 마지막 [Index (PK) 값]의 +1로 한 번씩 계속 추가되어 저장이 되었습니다. 이때 <첫번째 쿼리문>으로 복사 된 B의 정보가 있는 <소유물 테이블>의 플러스가 된 [Index 칼럼(PK값)]의 값을 <두번째 쿼리문> 에서 복사를 진행할 때 B의 [플러스가 된 Index 값]을 B 사람의 <번호테이블> 안에 있는 @특정번호@ 컬럼에 하나씩 INSERT INTO를 하고 싶습니다.. 즉 위의 과정을 제가 생각하는 잘못된 쿼리문으로는 <두번째 쿼리문을 인용하여 하고자하는 쿼리문 (잘못된 쿼리)> INSERT INTO 번호테이블 (아이디컬럼, 컬럼2, 컬럼3, @특정번호@) SELECT 'B아이디', A.컬럼2, A.컬럼3, B.@특정번호@ FROM 번호테이블 as A inner join 소유물테이블 as B on @특정번호@ = (SELECT @특정번호@ FROM 번호테이블 WHERE 컬럼 = Blah) WHERE A.컬럼 = '문자열' 이런 식으로 지정을 하고 싶습니다. 도대체............ 어떻게 해야 되나요???....
위는 제가 업데이트를 해본 것인데 (이너조인) 상위 하나의 값만 복사가 됩니다...
즉 이 사진처럼 총 4개의 테이블이 있고
1, 3 번째는 PK값입니다
증가된 3번째 테이블의 PK값을
4번째 테이블에 순차적으로 대입을 시키고 싶습니다.
4개 테이블의 모든 번호의 컬럼 이름은 모두 같습니다..
제발 도와주세요 능력자분들....
제발 부탁드립니다..
눈물 흘리고 있습니다..
살려주세요..
Comment 1
-
디비하는조씨
2017.02.27 14:47
set identity_insert 문 사용하면 해결될것 같지만
이런 방법은 추천하고 싶지 않네요
update나 merge구문 이용하심이..