2012-11-19 2 views
3

PostgreSQL에 개인 지오 데이터베이스를 가져 왔습니다. 내 테이블 중 하나에 새로운 열을 추가했습니다. 이 열은 비어 있으며이 열에 값을 추가/삽입하여 모든 행을 채 웁니다. 내가 사용했을 때 :PostgreSQL의 새로 추가 된 열의 열에 값을 삽입하는 방법

INSERT INTO district (province_id) VALUES 
('13'), ('13'), ('13'), ('13'), ('13'), ('13'), ('12'), ('12'), ('12'), ('12'), ('12'), ('12'), ('12'), ('12'), ('12'), ('19'), ('19'); 

그 결과 새로운 행이 생성되어 17 개의 행 대신에 34 개의 행을 갖게되었습니다. UPDATE ... Set ... = ... 여기서 .... 쿼리가 성공적으로 실행되었지만 영향을받은 행이 없습니다. 내 질문은 지금 : 새 행이 결과로 생성되지 않도록 새로 만든 열의 각 행에 값을 어떻게 추가 할 수 있습니까?

감사합니다. 사전에 도움을 주시면 매우 감사하겠습니다.

Barbaara

+5

:

다음 당신은 모든 지역에 대해 같은 UPDATE 년대를 작성하거나 같은 것을 작성해야? –

+0

뮤, 당신 말이 맞아, 그건 내 실수로 INSERT를 사용했다. 그러나 나는 또한 UPDATE를 사용하려고 시도하고 어떤 행도 채워지지 않았다. Igor과 Konstantin의 팁으로, 이제 문제가 해결되었습니다. –

답변

4

먼저 - 표에서 "지역"당신이이 "지역"의 모든 레코드에 대해 고유, 열을 선택해야합니다 (기본 키 나는 그것이 "district_id"라고 생각한다.).

UPDATE district 
SET province_id = 13 -- put your province_id value here 
WHERE district_id = 1234; -- put the key value here 

그것은 "district_id"= 1234 "구역"의 레코드를 검색하고 13의 "province_id을"SET :

그때마다 당신은 "province_id"를 설정해야합니다 "district_id" . 어떻게하는`province_id` 가치를해야하는 줄 알고

WITH vals(district_id numeric, province_id numeric) as 
( VALUES((1234,13), -- pairs of district_id , province_id 
      (1235,13), 
      (1236,13), 
      ........) -- write the pair for every district 
) 
UPDATE district as dist 
SET province_id = vals.province_id 
FROM vals 
WHERE dist.district_id = vals.district_id 
+0

감사합니다. 이고르, 당신은 실제로 저에게 한 발 더 나아갔습니다. 정말 고맙습니다. –