수색…


한 테이블에서 다른 테이블로 데이터 복사

이 코드는 테이블에서 데이터를 선택하여 쿼리 도구 (일반적으로 SSMS)에 표시합니다.

SELECT Column1, Column2, Column3 FROM MySourceTable;

이 코드는 해당 데이터를 테이블에 삽입합니다.

INSERT INTO MyTargetTable (Column1, Column2, Column3)
SELECT Column1, Column2, Column3 FROM MySourceTable;

데이터를 테이블로 복사하여 즉시 테이블 생성

이 코드는 테이블에서 데이터를 선택합니다.

SELECT Column1, Column2, Column3 FROM MySourceTable;

이 코드는 MyNewTable 이라는 새 테이블을 만들고 그 데이터를 그 테이블에 저장합니다.

SELECT Column1, Column2, Column3 
INTO MyNewTable
FROM MySourceTable;

데이터를 테이블로 이동 (고유 키 방식 가정)

데이터를 이동 하려면 먼저 대상에 데이터를 삽입 한 다음 소스 테이블에서 삽입 한 데이터를 삭제하십시오. 이것은 일반적인 SQL 작업은 아니지만 계몽적일 수 있습니다.

무엇을 삽입 했습니까? 일반적으로 데이터베이스에서 행을 고유하게 식별하는 데 사용할 수있는 하나 이상의 열이 있어야하므로이를 가정하고 사용합니다.

이 문은 일부 행을 선택합니다.

SELECT Key1, Key2, Column3, Column4 FROM MyTable;

먼저 우리는이를 목표 테이블에 삽입합니다 :

INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;

이제 두 테이블의 레코드가 Key1 , Key2 에서 고유하다고 가정 하면 소스 테이블에서 데이터를 찾아 삭제할 수 있습니다

DELETE MyTable
WHERE EXISTS (
    SELECT * FROM TargetTable 
    WHERE TargetTable.Key1 = SourceTable.Key1
    AND TargetTable.Key2 = SourceTable.Key2
);

Key1 , Key2 가 두 테이블에서 고유 한 경우에만 올바르게 작동합니다.

마지막으로, 우리는 일을 반으로 끝내기를 원하지 않습니다. 이것을 트랜잭션으로 랩핑하면 모든 데이터가 이동되거나 아무 일도 일어나지 않습니다. 이렇게하면 데이터를 삽입하지 않고 소스에서 데이터를 삭제할 수 없게됩니다.

BEGIN TRAN;

INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;


DELETE MyTable
WHERE EXISTS (
    SELECT * FROM TargetTable 
    WHERE TargetTable.Key1 = SourceTable.Key1
    AND TargetTable.Key2 = SourceTable.Key2
);

COMMIT TRAN;


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow