2014-10-09 5 views
1

이 쿼리를 시도했지만 작동하지 않습니다. 아이디어는 한 테이블에서 다른 테이블로 데이터를 복사하는 것입니다.업데이트 테이블 - 관계가 없습니다.

UPDATE A 
SET  A.name_en = B.name 
FROM country_name as A 
     INNER JOIN country as B 
      ON A.id = B.id 
나는이 오류가 무엇입니까

:

Error in query: ERROR: relation "a" does not exist 
LINE 1: UPDATE A 

왜?

답변

3

여기에 추가 참여가 전혀 필요하지 않습니다. 당신은 테이블이 업데이트되고에 대해 외부 조인을해야 할 때

UPDATE country_name 
SET  name_en = B.name 
FROM country AS B 
WHERE counry_name.id = B.id; 

당신이 UPDATE sometable ... FROM sometable a ... WHERE sometable.id = a.id 트릭을 할 필요가있는 유일한 시간입니다 : 당신은 inner join 그래서 대신 fromwhere 절을 그것을 할 단지 수 일을하는지 .

PostgreSQL의 UPDATE ... FROM ... 기능으로 명시 적 조인 구문을 사용할 수 없다는 사실은 유감입니다.

+0

아직 가입 상태입니다. – Brandon

+0

@Brandon 예. 내 말은 내부 조인 만 필요한 경우 'FROM' 절에서 다시'country_name'을 참조하는 * self-join *이 필요 없다는 것입니다. –

+0

@CraigRinger 첫 번째 예제는 작동하지만 두 번째 예제는 작동하지 않습니다. http://sharetext.org/uMTT – user2990084

1

조치가 쿼리 자체의 외부에서 수행되므로 테이블의 실제 이름을 작성해야한다고 생각합니다. 그러므로 협회는 끝날 것입니다.

UPDATE country_name 
SET  A.name_en = B.name 
FROM country_name as A 
     INNER JOIN country as B 
      ON A.id = B.id 
WHERE A.id = B.id; 

귀하의 DB에 실수를하지 않도록 다른 사람의 답변에서 가져갔습니다.

+2

예 ** ** 쓰지 않는대로 ** 실행하십시오.'country_name A '의 별칭 버전에 대한 조인과 일치하는'country_name' 항목의 업데이트를 제한하는'WHERE' 절이 없습니다. –

관련 문제