如何在 PostgreSQL 9.5 中执行 INSERT INTO SELECT 和 ON DUPLICATE UPDATE?

2024-05-22

我正在尝试在 PostgreSQL 中执行以下操作

INSERT INTO blog_sums ( blog_id, date, total_comments)
    SELECT blog_id, '2016-09-22', count(comment_id) as total_comments_update
    FROM blog_comments
    WHERE date = '2016-09-22'
    GROUP BY blog_id         
ON CONFLICT (blog_id ,date)
DO UPDATE SET blog_sums.total_comments = total_comments_update;

我在日期 + blog_id 上有唯一的密钥,但我不断收到错误:

错误:列“total_comments_update”不存在

在这种情况下,我正在寻找“正确”的方法和最有效的方法来更新重复/冲突

我的桌子是

blog_comments (blog_id, comment_id, comment, date)
blog_sums ( blog_id, date, total_comments) . unique on blog_id+date

Thanks


您无法从 select 中访问列别名DO UPDATE SET条款。您可以使用excluded表别名,其中包括由于冲突而无法插入的所有行:

INSERT INTO blog_sums ( blog_id, date, total_comments)
    SELECT blog_id, '2016-09-22', count(comment_id) as total_comments_update
    FROM blog_comments
    WHERE date = '2016-09-22'
    GROUP BY blog_id         
ON CONFLICT (blog_id ,date)
DO UPDATE SET total_comments = excluded.total_comments;

So excluded.total_comments最后一行指的是值total_comments我们尝试插入但由于冲突而无法插入。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 PostgreSQL 9.5 中执行 INSERT INTO SELECT 和 ON DUPLICATE UPDATE? 的相关文章

  • 确保唯一 ID 的 PostgreSQL 序列

    拥有一个以列 ID 作为主键的表 以及一个包含由序列 myUniqueSequence 定义的整数的列 MyNumber 我想在 PostgreSQL 中定义 myUniqueSequence 它将返回 MyNumber 列的下一个可用且唯
  • PostgreSQL 错误:EXECUTE 的查询字符串参数为空

    我有一个名为证据的表 其中有一个触发器调用一个存储过程 该过程基本上按月进行表分区 但是 当我开始在负载下插入大 量行时 出现了一个模糊的错误 Npgsql NpgsqlException query string argument of
  • sqlalchemy JSON查询没有特定键的行(键存在)

    当将 sqlalchemy 与 postgresql 一起使用时 我有以下表格和数据 id data 1 2 a 1 2 rows 如何找到没有键的行 例如 a 还是数据 a Give me all objects that does no
  • 如何按照最初给出的时区存储和显示日期?

    我有一台服务器正在从不同时区的客户端提供数据 数据源包含人物 他们的出生日期和其他事件日期 出于我们的目的 如果我们可以将日期存储为给我们的日期 那就很方便了 例如 如果客户位于加利福尼亚州 并且告诉我们该人的出生日期是 5 月 31 日
  • 数组 (UUID[ ]) 会破坏 1NF 吗?

    我的问题是包含 UUID 数组的字段是否会破坏范式 http en wikipedia org wiki Database normalization 在包含数组之前位于 NF 中的表中 原表 CREATE TABLE Floor Floo
  • Flask-SQLAlchemy 多态关联

    我有两个主表role and users 以及关于users我让 3 个关联到表operator teacher and student 到目前为止 我是这样做的 class Role db Model tablename roles id
  • 将 PostgreSQL 扩展安装到所有模式

    我在 PostgresQL 9 1 1 上尝试扩展unaccent http www postgresql org docs 9 1 static unaccent html适用于所有模式 所以我运行了命令CREATE EXTENSION
  • 在官方 Postgres docker 镜像中记录所有查询

    我有一个基于 Postgres 官方 docker 镜像的 docker 容器 当我使用查看 docker 容器的日志时 我想看到传入的查询docker logs f 这是我的 Dockerfile FROM postgres 11 1 a
  • 如何更改 PostgreSQL 表中列的数据类型?

    在 PostgreSQL 交互式终端中输入以下命令会导致错误 ALTER TABLE tbl name ALTER COLUMN col name varchar 11 更改列的数据类型的正确命令是什么 请参阅此处的文档 http www
  • Laravel 5.3 Schema::create ENUM 字段是 VARCHAR

    我刚刚创建了新的迁移 运行后我看到了我的领域type 不是 ENUM 类型 它有一个改为 VARCHAR 255 类型 Schema create payments function Blueprint table table gt inc
  • 强制 DataMapper 断开与 postgresql 的连接

    我有一个测试 正在 postgresql 中创建和销毁多个数据库 为了能够删除数据库 我需要告诉 DataMapper 断开连接 我似乎找不到任何有关如何执行此操作的文档 DataMapper Adapters PostgresAdapte
  • 如何在 PostgreSql 的预订表中找到第一个空闲时间

    预订表包含预订开始日期 开始时间和持续时间 工作日的开始时间为工作时间 8 00 18 00 以半小时为增量 持续时间也以每天半小时为增量 CREATE TABLE reservation startdate date not null s
  • Ansible 创建可以访问所有表的 postgresql 用户?

    这应该很简单 我想要创建一个 Ansible 语句来创建一个 Postgres 用户 该用户具有特定数据库的连接权限以及对该特定数据库中所有表的选择 插入 更新 删除权限 我尝试了以下方法 name Create postgres user
  • 从 INSERT 返回带有 ON CONFLICT 的行,无需更新

    我遇到的情况是 我经常需要从具有唯一约束的表中获取一行 如果不存在则创建它并返回 例如我的表可能是 CREATE TABLE names id SERIAL PRIMARY KEY name TEXT CONSTRAINT names na
  • 如何使用 keyTextTransform() 进行嵌套 json?

    我的模型有一个 json 字段 我可以使用以下查询访问 jsonfield key1 from django contrib postgres fields jsonb import KeyTextTransform MyModel obj
  • Postgres - 如何在插入时自动调用 ST_SetSRID(ST_MakePoint(lng, lat), 4326)?

    我正在使用postGIS 并且我对SQL不是很熟悉 我可以成功插入到我的markers表只要我做这样的事情 伪代码 INSERT INTO markers created by title description lat lng geogr
  • 如何查找 PostgreSQL 数据库的上次更新时间?

    我正在使用一个批量更新的 postgreSQL 数据库 我需要知道数据库 或数据库中的表 上次更新或修改的时间 两者都可以 我看到 postgreSQL 论坛上有人建议使用日志记录并查询日志 这对我不起作用 因为我无法控制客户端代码库 你可
  • 防止 PostgreSQL 中专有名词的词干?

    以其热情将词干标记转化为词位 http www postgresql org docs current interactive textsearch intro html PostgreSQL全文搜索引擎也减少了专有名词 例如 essais
  • Google Cloud SQL - Postgresql 存储不断增长

    我最近开始修补 Google Cloud SQL PostgreSQL 我创建了一个空数据库 在 4 5 天的时间里 其存储使用量已增长到超过 20GB 它一直在上升 但数据库中没有数据 它甚至没有被使用 有谁知道会发生什么以及如何阻止它
  • postgreSql 中特定时间后表更新

    我已经在 postgres 中创建了表 现在我想在特定时间 例如 1 小时 后更新一行 我看到很多问题 例如 https dba stackexchange com questions 56424 column auto updated a

随机推荐