我将个人地理数据库导入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 ... = ... Where ....时,查询成功运行,但是没有行受到影响。我现在的问题是:如何为新创建的列中的每一行添加值,以便不会创建新行?
提前致谢,非常感谢任何帮助。
Barbaara
答案 0 :(得分:4)
首先 - 在表“区”中你必须选择一个列,这对于“区”中的每个记录都是唯一的(主键。我猜它叫做“district_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