본문 바로가기

Program/MSSQL

mssql에서 동일한 테이블에서 원하는 행 복사

 

 

Microsoft SQL Server(MSSQL)에서 동일한 테이블 내에서 원하는 행을 복사하는 방법은 INSERT INTO와 SELECT 문을 함께 사용하는 것입니다. 이 방법은 주로 테이블 내에서 일부 데이터를 복제하여 같은 테이블에 새로운 행으로 삽입할 때 사용됩니다. 이러한 작업은 테스트 데이터를 생성하거나, 기존 데이터를 기반으로 새로운 데이터를 만들어야 할 때 유용할 수 있습니다.

기본 문법

INSERT INTO 테이블명 (컬럼1, 컬럼2, ..., 컬럼N)
SELECT 컬럼1, 컬럼2, ..., 컬럼N
FROM 테이블명
WHERE 조건;

 

예제

예를 들어, Employees 테이블이 있고, 이 테이블 내에서 특정 조건을 만족하는 직원의 정보를 복사하여 같은 테이블에 새로운 행으로 삽입하고자 한다고 가정해보겠습니다. 여기서는 직원의 Role이 'Developer'인 모든 행을 복제하되, EmployeeID는 새로운 값(예를 들어, 기존 ID에 1000을 더한 값)으로 설정하고자 합니다. EmployeeID 컬럼이 기본 키이거나 고유해야 한다고 가정하면, 다음과 같이 작성할 수 있습니다.

INSERT INTO Employees (EmployeeID, Name, Role, Salary)
SELECT EmployeeID + 1000, Name, Role, Salary
FROM Employees
WHERE Role = 'Developer';

 

 

이 예제에서는 기존 Developer 역할을 가진 모든 직원의 EmployeeID, Name, Role, Salary를 선택하고, EmployeeID에 1000을 더한 값을 새 EmployeeID로 설정하여 같은 Employees 테이블에 삽입합니다. 이러한 방식으로 데이터의 특정 부분을 동일한 테이블 내에서 복제할 수 있습니다.

주의사항

  • 무결성 제약 조건: 복사하려는 데이터가 기본 키나 외래 키 같은 무결성 제약 조건을 위반하지 않도록 주의해야 합니다. 예제에서는 EmployeeID를 고유하게 유지하기 위해 기존 ID에 1000을 더하는 방법을 사용했습니다.
  • 성능 고려: 큰 테이블에서 많은 양의 데이터를 복사할 때는 성능 저하가 발생할 수 있으므로, 필요한 경우 트랜잭션 관리와 함께 작업을 실행하는 것이 좋습니다.

이 방법을 사용하면 동일한 테이블 내에서 데이터를 유연하게 복제하고 관리할 수 있습니다.