我将个人地理数据库导入了 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... 时,查询成功运行,但是没有任何行受到影响。我现在的问题是:如何为新创建的列中的每一行添加值,这样就不会因此创建新行?
在此先致谢,我们将不胜感激。
芭芭拉
最佳答案
首先 - 在“district”表中,您必须选择一个列,该列对于“district”中的每条记录都是唯一的(主键。我猜它叫做“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
关于sql - 如何将值插入到 PostgreSQL 表的新添加列的行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13448993/