INDEX | COIN | CNT |
1 | 1000 | 3 |
2 | 2000 | 2 |
INDEX | COIN | DAY |
|
|
|
|
|
|
위에 A 테이블에는 받아온 값을 연산하여 연산된 값을 COIN에 갱신시켜 줍니다.
B 테이블 COIN에 A테이블의 연산이 끝난 COIN 값을 넣어주려 하는데, B테이블의 칼럼값은 받아온 나머지 값들로 삽입됩니다.
그러니까 B테이블의 한 컬럼에만 값이 다른 방식으로 들어간다는거죠
이렇게 하려면 어떻게 해야 할까요? INSERT INTO SELECT를 쓰면 다른 테이블의 값을 복사할 수 있다는건 알지만 그렇게되면 다른 값들의 삽입을 어떻게 처리해야 할지 모르겠습니다.
UPDATE A
SET COIN = COIN + ISNULL(@icoin, 0)
WHERE INDEX = @index <-이건 A테이블의 내용을 업데이트 시키는 쿼리입니다.
INSERT INTO B(INDEX, DAY)
VALUES @index, @day
INSERT INTO B(COIN)
SELECT COIN
FROM A
두개의 쿼리를 어떻게 합칠 수 있을까요? 참고로 저장프로시저로 되어 있습니다. a테이블은 index를 검색해 같은 index에 있는 coin값을 갱신시켜주는 것이고, b테이블에는 같은 index라도 프로시저가 한번 실행되면 계속 데이터를 쌓아나갑니다.
UPDATE A
SET COIN = COIN + ISNULL(@icoin, 0)
WHERE INDEX = @index <-이건 A테이블의 내용을 업데이트 시키는 쿼리입니다.
INSERT INTO B(INDEX, COIN, DAY)
SELECT @index, COIN @day FROM A WHERE INDEX = @index
이거 아닌가요?