2014-07-06 12 views
0

테이블 "구성 요소"와 테이블 "무언가"라는 두 개의 테이블이 있습니다.SQL 쿼리가 다른 테이블을 비교하고 바꿉니다.

두 테이블에는 "unit"열과 "code"열이 있으며, 동일한 기사의 경우 코드는 두 테이블에서 동일합니다.

두 테이블이 서로 다른 환경에서 왔으며 많은 레코드에서 단위가 다른 방식으로 작성되었습니다. 나는 "kg - KG", "kg - kg"을 의미합니다. 아주 지저분 해! 대부분의 차이점을 조정하기 위해 수동으로 쿼리를 실행하고 싶습니다. 위의 경우

Components      Something 

    Code----Unit      Code Unit 
    1  kg      1  kilogram 
    2  kg      2  kg 
    3  kg      3  kilogram 

표에 kg에 "뭔가" ". 뭔가 테이블에 대체와 같은"일 "단위 값"kg 모든 "kg"을 교체해야 쿼리 kg "테이블 구성 요소가있다" . "하고 코드 내가 늘 알고 동일하지만 나는 그것을 작성하는 방법을 모르는 당신이 도와주세요 수

답변

1
update Something 
    set Something.Unit = Components.Unit 
    from Something 
    join Components 
    on Something.Code = Components.Code 
    and Components.Unit = 'kg' 
    and Something.Unit = 'kilogram' 
0

당신은 UPDATE JOIN 사용할 수 있습니다.?

UPDATE Something 
SET 
    Unit = S.Unit 
FROM 
Something S 
JOIN 
Components C ON 
    (C.Code = S.Code) 

Something.Unit을 설정합니다값으로 코드를 일치 항목으로 사용하여.

참고 : 단위가 다른지 확인해야 할 필요가 없습니다. <> 절을 추가하면 인덱스가 사용되지 않으므로 쿼리 속도가 느려집니다.

관련 문제