2014-10-09 1 views
0

데이터베이스 테이블에서 데이터를 가져 오는 쿼리를 작성했습니다. 나는 내 쿼리의 결과를 다른 데이터베이스 테이블에 병합하는 과정에 있으며 일부 조언이 필요합니다. 내 선택 문은 다음과 같습니다select 문에서 여러 개의 행을 기존 테이블에 삽입

SELECT * FROM dbo.ActivePasscodes 
WHERE ACCOUNT NOT IN 
('BCLions','DCL02','DEM02','DEMO2','Fission','Havilah','Mbac', 
'NEW','OrkoSilver','PDAC2012','PDAC2012D','PROMO2','Rocktech','XMAS', 
'Xmas1','Xmas2','Xmas3','Xmas4','Xmas5','Xmas6', 
'Xmas7','Xmas8','CMP33','TEST','ZZZ3','DNB02','XXX02', 
'DNBTEST','32576','TEST123','TEST REC','CCTest','XXX') 
AND Deleted <> '1' 
AND CODE NOT IN ('21717312','24536779','27227816','37121896','47241', 
'35965','51983','68696') 

이 쿼리 나에게 1501 개 레코드를 반환합니다. 내가 달성하고자하는 것은 동일한 레코드가있는 다른 기존 데이터베이스 테이블에이 1501 레코드를 삽입하는 것입니다 (모든 열이 일치하는 것처럼).

다른 사람이이 쿼리에서 반환 한 모든 레코드를 다른 데이터베이스 테이블에 어떻게 삽입 할 수 있는지 나와 다른 사람이 올바른 방향으로 가리키게 할 수 있습니까? 필자는 Microsoft SQL Server를 처음 접했고 이에 대한 연구를 해왔지만 내 시나리오와 상당히 유사한 것을 발견하지는 못했습니다. 어떤 것이 명확하지 않은 경우 추가 설명을 요청하십시오.

감사합니다.

감사합니다.

-Dave

+0

데이터베이스가 동일한 서버에 있다는 것이다 모든 열을 지정해야합니다 ?? –

+0

예. 동일한 서버에 있습니다. – MotoDave452

+1

@MotoDate 내가 게시 한 답변을 시도하십시오 –

답변

3

이 시도 : 당신은이 같은 기존 데이터베이스에서 원격 테이블에 액세스 할 수

:

select * from NewDataBase.dbo.NewTable 

같은 방법으로. 그냥 당신은 NewDatabase 이름을 쓰기

Insert into NewDataBase.dbo.NewTable(Col1,Col2,Col3,Col4) 
SELECT (Col1,Col2,Col3,Col4) FROM dbo.ActivePasscodes 
WHERE ACCOUNT NOT IN 
('BCLions','DCL02','DEM02','DEMO2','Fission','Havilah','Mbac', 
'NEW','OrkoSilver','PDAC2012','PDAC2012D','PROMO2','Rocktech','XMAS', 
'Xmas1','Xmas2','Xmas3','Xmas4','Xmas5','Xmas6', 
'Xmas7','Xmas8','CMP33','TEST','ZZZ3','DNB02','XXX02', 
'DNBTEST','32576','TEST123','TEST REC','CCTest','XXX') 
AND Deleted <> '1' 
AND CODE NOT IN ('21717312','24536779','27227816','37121896','47241', 
'35965','51983','68696') 
+0

이것은 잘 작동하는 것 같습니다. 고마워요! 처음에는 메시지가 나타났습니다. "IDENTITY_INSERT가 OFF로 설정된 경우 테이블 '테이블'의 ID 열에 명시 적 값을 삽입 할 수 없습니다. IDENTITY_INSERT를 ON으로 설정하고 쿼리를 실행 한 다음 IDENTITY_INSERT를 OFF로 설정하면 정상적으로 실행됩니다. 왜 이런 일이 발생하는지 알고 있습니까? "UPDATE 문이 CHECK 제약 조건"CK_Account_Customer "과 충돌했습니다. 충돌이 데이터베이스"table ", 테이블"dbo.table ", 'ACCOUNT'열에서 발생했습니다. 나는 이것을 알아낼 수 있어야합니다. – MotoDave452

+0

내 추측은 내 쿼리에서 값을 추가하려고하면 해당 값이 해당 테이블에도 존재하는지 확인하기 위해 다른 테이블을보고 제약 조건 충돌 오류가 발생합니다. 이 프로젝트를 처음 접했을 때 데이터베이스를 설정하지 않았으므로 좀 더 살펴볼 것입니다. 나는 당신의 도움을 크게 주셔서 감사합니다! – MotoDave452

+1

1)'IDENTITY_INSERT'의 경우'Auto Increment'가 무시되는 열에 값을 삽입 함을 의미합니다. SQL 서버는 해당 열에 자동으로 값을 추가합니다. 2) 업데이트하는 동안이 열에'ACCOUNT '이 있습니다. 해당 열의 제약 조건 for info'sp_heltext table_name' 제약 조건을 여기에서 확인하십시오 –

1
INSERT INTO MyTableName (MyField1, MyField2, etc) 
SELECT MyField1, MyField2, etc 
FROM dbo.ActivePasscodes 
WHERE ACCOUNT NOT IN 
    ('BCLions','DCL02','DEM02','DEMO2','Fission','Havilah','Mbac', 'NEW','OrkoSilver','PDAC2012','PDAC2012D','PROMO2','Rocktech','XMAS', 'Xmas1','Xmas2','Xmas3','Xmas4','Xmas5','Xmas6', 'Xmas7','Xmas8','CMP33','TEST','ZZZ3','DNB02','XXX02', 'DNBTEST','32576','TEST123','TEST REC','CCTest','XXX') 
    AND Deleted <> '1' 
    AND CODE NOT IN ('21717312','24536779','27227816','37121896','47241', '35965','51983','68696') 
+0

이 방법이 잘 작동하는 것처럼 보이는 답을 고맙게 생각합니다! – MotoDave452

관련 문제