2011-10-24 2 views
0

테이블이 _field입니다. 이제 어떤 이유에서 block이라는 테이블 내부의 필드가 엉망이되어 잘못된 블록 번호를 포함하게되었습니다. _field에 대한 기본 데이터가 있지만 일부 외국 필드는 외부 제약 조건으로 인해 더 이상 기본 데이터가 될 수 없기 때문에 기본 데이터를 복원 할 수 없습니다. 그래서 지금은 tmp_field이라는 새 테이블을 만들고 데이터에 기본값 _field을 채 웁니다.다른 필드를 건드리지 않고 테이블의 id 필드를 업데이트해야합니다.

지금, 나는 _field에서 데이터를 받아 tmp_field에서 block 번호와 일치하는 _fieldblock 모든 숫자를 변경하는 쿼리가 필요합니다.

가 될 구문 다른 방법 : 그것은 _field의 각 행을 검사하여 어떤 필드 (같은 fieldid 또는 name)이 tmp_field 동일한 필드와 일치하는 경우, 다음의 값과 일치하도록 _field 블록의 값을 변경
tmp_field의 블록

참고 : PostgreSQL 9.1을 사용하고 있습니다.

모든 것에 대해 감사드립니다.

답변

2
UPDATE _field 
    SET block = tmp_field.block 
    FROM tmp_field 
    WHERE _field.fieldid = tmp_field.fieldid 
     OR _field.name = tmp_field.name 
+0

아, 특히 빠른 응답을 주셔서 감사합니다. 비슷한 것을 시도했지만'FROM' 절을 몰랐기 때문에 작동하지 않았습니다. 또한,'fieldid'는'_field.fieldid' 일 필요가 있습니다. 이것은'name'과 동일하지만, 그래도 작동합니다. 무리 감사. – zermy

+0

@ zermy : 귀하의 의견에 대한 답변이 업데이트되었습니다. –

관련 문제