sql - 如何将值插入到 PostgreSQL 表的新添加列的行中

标签 sql postgresql postgresql-9.2

我将个人地理数据库导入了 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/

相关文章:

python - 如何在 Django 管理 View 中显示整个现有的 postgres 数据库

java - MySql - 如何查询多个 boolean 列?

MySQL - 在同一个表中分组查询值

arrays - 如何在 Rails 4.2 表单中提交字符串数组

javascript - 如何在 Sequelize JS 和 PostgreSQL 中的 1 :M relationship when implementing with . bulkCreate() 中使用外键

sql - Postgres 查询包含某些内容的 JSON 数组

sql - 在 row_to_json 函数中选择查询

postgresql - 编写扩展 postgresql

sql - 在 sql server 2008 中将 varchar 转换为十进制

asp.net - SQL:自动插入日期