이 쿼리를 사용하여 상기 테이블의 결과를 반환하고 SalesReason 테이블에 삽입합니다. 아래 그림과 같이 삽입 할 때 행을 반환하는 행의 수가 8000을 넘지 만 인 행을 선택하면 테이블에 3 행만 삽입됩니다. 왜 그런가? SELECT
쿼리 결과에 많은 중복 행이 있습니다 SelectStatementResult예상보다 적은 수의 행 INSERTED
답변
이 선택 문의 결과 :
INSERT INTO dp_stg_sales.SalesReason (SalesReasonID, TeamName, ReasonType)
SELECT (CASE WHEN SalesReasonID_One = 'NULL' THEN 0
ELSE CAST(SalesReasonID_One AS INTEGER)
END) AS SalesReasonID,
Name_One,
ReasonType
FROM dp_stg_sales.Sales_April_Part1_Filtered
편집
.dp_stg_sales.SalesReason
에는
IGNORE_DUP_KEY = ON
옵션으로 생성 된 고유 색인이 있으므로 테이블에 아직 존재하지 않는 고유 키 값만 삽입됩니다.
당신은 절대적으로 정확한 선생님입니다. 기본적으로 Teradata를 사용하고 있습니다. 기본적으로 언급하지 않으면 모든 테이블이 SET 테이블 (중복 허용되지 않음)이므로 테이블을 만들 때 MULTISET을 추가하여이 문제를 해결했습니다. –
질문에 SQL 태그를 붙인 이유는 무엇입니까? 서버가 Teradata 인 경우? –
@ umair.ashfr :'MULISET'으로 전환하면 모든 중복 행이 삽입되지만 실제로 필요합니까? – dnoeth
사용중인 데이터베이스에 질문에 태그를 답니다. –
@GordonLinoff 저에게 어떻게 안내해 주실 수 있습니까? –
수정을 클릭 한 다음 태그 섹션까지 스크롤합니다 (질문 본문 영역 아래에 있음). 데이터베이스 (예 : MySQL, SQL Server)에 대한 태그 추가 –