2017-12-01 8 views
0

SQL server 2012을 사용 중입니다.해당하는 경우 모든 레코드에 대해 다른 업데이트 삽입

두 개의 테이블이 있습니다. 나는 UPDATE 두 번째 테이블 싶어요.

나는 if exists then insert else update 개념을 사용하려고합니다. 그러나 그것은 단일 기록을위한 것입니다. 전체 테이블을 확인하고 싶습니다. 매번 기본 키 값을 제공 할 수 없습니다.

간단히 말해서 첫 번째 테이블을 스캔해야하고 두 번째 테이블을 parellaly로 업데이트해야합니다. 그래서 제게 스크립트를주세요. 기존의 모든 데이터는 당신은 표 A.에 존재하지 않는 단순히 실행 삽입 문이 업데이트 당함되면

+1

당신은 미국을 표시 할 수 있습니다이이 데이터를 그 때 나는 당신의 테이블에 대한 어떤 생각을하지 않은 때문에 테이블에 따라 데이터를

변경 문을 업데이트합니다 다른 레코드를 삽입 존재하지 않는 확인합니다 시도 테이블 스키마 및 쿼리 – Raptor

+0

나는 간단한 예를 든다. 테이블에는 sizeCd (크기가 char (7)) 인 하나의 열이 포함되어 있습니다. – vinG

+1

먼저 'UPDATE'명령을 실행 한 다음 'IF @ ROWCOUNT = 0 INSERT ...'와 같은 작업을 수행 할 수 있습니다. INSERT 문은 UPDATE 문에 의해 행이 갱신되지 않은 경우에만 발생합니다. – cars10m

답변

0

는이

처음 실행 동적 UPDATE

SELECT 'UPDATE TABLEA SET SizeCode ='''+SizeCode+''' ', FROM TABLEB WHERE SizeCode IN (SELECT SizeCode FROM TableA) 

에 대한 쿼리를 생성 TRY

INSERT INTO TableA 
SELECT * FROM TABLEB WHERE SizeCode NOT IN (SELECT SizeCode FROM TableA) 

또는

INSERT INTO TableA (SizeCode) 
    SELECT SizeCode FROM TABLEB WHERE SizeCode NOT IN (SELECT SizeCode FROM TableA) 
+0

정말 고마워. 그것은 작동합니다 – vinG

+0

두 번째 쿼리를 수정하시기 바랍니다 'INSERT INTO TableB SELECT * FROM TABLEA WHERE SizeCode NOT IN (Select SizeCode FROM TableB) ' – vinG

+0

무엇이 잘못 되었나요? 그것은 Ans Check It을 수정 했음에도 불구하고 작동합니다. –

0

BEGIN 
    IF NOT EXISTS (SELECT * FROM EmailsRecebidos 
        WHERE De = @_DE 
        AND Assunto = @_ASSUNTO 
        AND Data = @_DATA) 
    BEGIN 
     INSERT INTO EmailsRecebidos (De, Assunto, Data) 
     VALUES (@_DE, @_ASSUNTO, @_DATA) 
    END 
    ELSE 
BEGIN 
UPDATE EmailsRecebidos SET A = 'a' WHERE De = @_DE 
        AND Assunto = @_ASSUNTO 
        AND Data = @_DATA 
END 

END