用于对重复 UPDATE 进行 UPSERT 或 INSERT 的 MERGE 语法

2024-03-27

所以我来自 MySQL 我可以做插入重复更新 http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html:

INSERT INTO table (a,b,c) 
VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;

但现在我正在使用 PostgreSQL,并且正在努力添加 UPSERT 功能,看起来 MERGE 可能适合我想要的功能,但想看看这是否是最佳语法。示例语法 1 http://archives.postgresql.org/pgsql-hackers/2008-04/msg01157.php, 我也看到了这个,但不明白如何实现 https://stackoverflow.com/questions/1109061/insert-on-duplicate-update-postgresql。我还没有尝试过这个,因为我认为 MERGE 用于将数据从 table1 合并到 Table2 或者类似的东西可以工作吗?

MERGE
INTO    table
USING   table
ON      c = 1
WHEN MATCHED THEN
UPDATE
SET     c=c+1
WHEN NOT MATCHED THEN
INSERT  (a,b,c)
VALUES  (1,2,3)

还有其他建议吗?


在 MERGE 可用之前,请使用这种强大的方法:在 PostgreSQL 中重复更新时插入? https://stackoverflow.com/questions/1109061/insert-on-duplicate-update-postgresql/1109198#1109198

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

用于对重复 UPDATE 进行 UPSERT 或 INSERT 的 MERGE 语法 的相关文章

随机推荐

  • 找不到模块 create-react-app/script/start.js

    我的程序结构发生了一些变化 由于其复杂性 我无法准确指出问题所在 自从我的应用程序崩溃并且不再工作以来 我尝试了不同的方法 例如删除节点模块包并重新安装它们 但仍然无法工作 每当我尝试跑步时npm 启动我收到以下错误 below is my
  • 使用密码保护关闭的工作簿

    我已经搜索过 但没有找到在关闭的工作簿上添加外部密码的方法 假设我已经关闭了名为 Sample xlm 的工作簿 并且我正在打开一个名为 Test xlm 的工作簿 是否有代码可以让我在 Sample xlsm 上设置密码 我的意思是外部密
  • 空状态页面和导航器问题?

    我想实施空状态页 https material io design communication empty states html content在 Flutter 应用程序中 当新闻源为空时 当提要中没有活动时 我想显示 没有活动 当数据
  • 如何将服务变量与组件 Angular 2 绑定?

    我有一个变量 public tick number 在服务中 该服务注入了另一个服务计时器 它的启动方式如下 class Service constructor public timer TimerService public sendSm
  • Python 和类似字典的对象

    我需要一个用于字典的 python 3 1 深度更新函数 该函数将递归更新父字典内的子字典 但我认为 将来 我的函数可能必须处理行为类似于字典但实际上并非如此的对象 此外我想避免使用isinstance and type 因为它们被认为是不
  • 无法运行 React-Native UIExplorer 示例项目

    我一直在尝试在 Windows 上运行 UIExplorer 项目 我收到以下错误 make D react native ReactAndroid build tmp buildReactNdkLib local armeabi v7a
  • Gunicorn + nginx:通过套接字还是代理服务器?

    我见过两种使用 Gunicorn 和 nginx 托管 django 应用程序的策略 一种策略是在网络端口上运行 Gunicorn 例如 来自goodcode https goodcode io articles django nginx
  • jQuery TouchSwipe 插件不适用于链接?

    我正在使用 jQuery TouchSwipe 插件 它在 div 上工作得很好 但在链接上根本不起作用 我想要它 因此如果您点击或单击链接 您将获得默认的链接行为 但是如果你滑动 我希望 javascript 滑动能够像元素是 div 一
  • Java 相当于 .NET Action 和 Func 等[重复]

    这个问题在这里已经有答案了 Java 中是否有标准的通用 回调 或 函数 方法 类型 例如System Action
  • ASP.NET 网站项目何时重新编译?

    As Maurico https stackoverflow com users 21239 mauricio scheffer and codeka https stackoverflow com users 241462 codeka首
  • 如何使用 Ecto 的时间戳向现有表添加时间戳?

    Since inserted at and updated at不可能是null这是行不通的 def change do alter table channels do timestamps end end Postgrex Error E
  • 在 Outlook 2013 中调用功能区按钮

    我们有一个 Outlook 插件 我们需要以编程方式取消任务项检查器窗口中的任务分配 就像取消分配按钮一样 人们会认为调用TaskItem CancelResponseState 可能会起作用 虽然它确实取消了分配 但它也使任务处于不可分配
  • 使用 RequestAnimationFrame 实现准确计时

    到目前为止 我还没有找到很多关于这个主题的文档 我的总体感觉是 在为浏览器实现动画时 最好使用 RequestAnimationFrame 而不是 bog 标准 JavaScript 计时器 我的理解是计时器不可靠 并且它们的分辨率在不同浏
  • Windows 8 Phone - 访问 NFC 读卡器?

    简短的问题 我可以使用支持 NFC 的 Windows Phone 8 读取信用卡信息吗 长问题 NFC 与信用卡如何工作 卡 或具有钱包功能的手机 通过 NFC 接收请求并以某种标准化格式回复明文信用卡信息 那么 钱包选项在广播信用卡信息
  • 传送仅公开 C api 的 C++ dll

    我正在编写一个软件 其 API 仅为 C 语言 因为很容易将 C 代码与其他软件 客户端链接起来 然而 实际的程序代码是用 C 完成的 使用所有常见的 C 功能 如异常 STL 等 导出的 API 标头本身将用纯 C 编写 其中export
  • 如何使用 pandas tz_convert 转换为多个不同时区

    我有一些数据如下所示hour以世界标准时间 UTC 表示 我想创建一个名为的新列local hour基于time zone 我怎样才能做到这一点 好像是熊猫的tz convert不允许列或 pandas 系列作为输入tz争论 Create
  • Rails ActionController::Metal 的实际作用是什么

    我想了解一下Rails ActionController 金属控制器 我读过相关内容here http api rubyonrails org classes ActionController Metal html但不完全理解 它用于构建
  • 对 DataGrid 组进行排序

    我有一个非常基本的DataGrid以及一些测试数据 数据作为ObservableCollection
  • 应用程序崩溃时 QSharedMemory 不会被删除

    我正在使用实现一个应用程序Qt C 我用过的地方QSharedMemory限制应用程序的多个实例 相关代码段在main cpp如下 QSharedMemory sharedMemory sharedMemory setKey SM INST
  • 用于对重复 UPDATE 进行 UPSERT 或 INSERT 的 MERGE 语法

    所以我来自 MySQL 我可以做插入重复更新 http dev mysql com doc refman 5 0 en insert on duplicate html INSERT INTO table a b c VALUES 1 2