3

我将个人地理数据库导入 PostgreSQL。对于我的一个表,我添加了一个新列。此列是空的,我想在此列中添加/插入值,以便填充其所有行。当我使用:

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

结果是创建了新行,所以我最终得到了 34 行,而不是 17 行。当我尝试使用 UPDATE...Set...=... Where.... 时,查询成功运行,但是,没有任何行受到影响。我现在的问题是:如何为新创建的列中的每一行添加值,从而不会创建新行?

提前致谢,任何帮助将不胜感激。

芭芭拉

4

1 回答 1

4

首先 - 在“区”表中,您必须选择一个列,该列对于“区”中的每条记录都是唯一的(主键。我猜它被称为“区 ID”)。

然后对于每个“district_id”,您需要设置“province_id”:

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

它将在“district”中搜索“district_id”=1234 的记录,并将其“province_id”设置为 13。

接下来你必须UPDATE为每个地区写这样的,或者写下类似的东西:

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
于 2012-11-19T08:19:11.523 回答