복붙노트

[SQL] SQL 벌크 기록 업데이트

SQL

SQL 벌크 기록 업데이트

나는 다음과 같은 구조의 SQL 서버 2008 환경에서 두 개의 테이블이

Table1
- ID
- DescriptionID
- Description

Table2
- ID
- Description

Table1.DescriptionID는 Table2.ID에 매핑됩니다. 그러나, 나는 더 이상 필요하지 않습니다. 나는 표 2에 그와 관련된 값으로 표 1의 설명 속성을 설정하는 대량 업데이트를 수행하고 싶습니다. 즉 나는 이런 일을하고 싶지 :

UPDATE
  [Table1] 
SET
  [Description]=(SELECT [Description] FROM [Table2] t2 WHERE t2.[ID]=Table1.DescriptionID)

이것은 적절한 접근 방법이다 그러나, 나는 확실하지 않다. 사람이 어떻게 이렇게하는 저를 게재 할 수 있습니까?

해결법

  1. ==============================

    1.귀하의 방법이 올바른지, 그리고 여기 당신이 그것을 할 수있는 또 다른 방법입니다 :

    귀하의 방법이 올바른지, 그리고 여기 당신이 그것을 할 수있는 또 다른 방법입니다 :

    update      Table1
    set         Description = t2.Description
    from        Table1 t1
    inner join  Table2 t2
    on          t1.DescriptionID = t2.ID
    

    중첩 된 선택은 조인을 수행하는 긴 방법입니다.

  2. ==============================

    2.당신의 접근 방식은 OK입니다

    당신의 접근 방식은 OK입니다

    어쩌면 약간 선명 (나에게 어쨌든!)

    UPDATE
      T1
    SET
      [Description] = t2.[Description]
    FROM
       Table1 T1
       JOIN
       [Table2] t2 ON t2.[ID] = t1.DescriptionID
    

    그냥 다르게 배치 동일한 쿼리이기 때문에 모두이 당신의 쿼리는 현명한 동일한 성능을 실행해야합니다.

  3. ==============================

    3.당신은이 가입과 정기적 업데이트를 통해이 작업을 수행 할 수 있습니다

    당신은이 가입과 정기적 업데이트를 통해이 작업을 수행 할 수 있습니다

    UPDATE T1
    SET Description = T2.Description
       FROM Table1 T1
          JOIN Table2 T2
             ON T2.ID = T1.DescriptionId
    
  4. ==============================

    4.또는 당신은 단순히 같은 조인을 사용하지 않고 업데이트 할 수 있습니다 :

    또는 당신은 단순히 같은 조인을 사용하지 않고 업데이트 할 수 있습니다 :

    Update t1 set  t1.Description = t2.Description from @tbl2 t2,tbl1 t1
    where t1.ID= t2.ID
    
  5. ==============================

    5.당신이 당신의 질문에 게시 된 SQL은 그것을 할 수있는 하나의 방법이다. SQL에서 대부분의 일들을 할 수있는 하나 개 이상의 방법이있다.

    당신이 당신의 질문에 게시 된 SQL은 그것을 할 수있는 하나의 방법이다. SQL에서 대부분의 일들을 할 수있는 하나 개 이상의 방법이있다.

    UPDATE
      [Table1] 
    SET
      [Description]=(SELECT [Description] FROM [Table2] t2 WHERE t2.[ID]=Table1.DescriptionID)
    

    당신이 PROD DB에서이를 실행에 계획하는 경우, 스냅 샷 또는 미러 그것의 첫번째 밖으로 테스트를 작성하는 것이 가장 좋습니다. 당신은 몇 가지 기록에 대한 예상대로 최대 데이터 끝을 확인합니다. 당신이 만족하는 경우에, 실제 DB에서 실행합니다.

  6. from https://stackoverflow.com/questions/6629088/bulk-record-update-with-sql by cc-by-sa and MIT license