开发者社区 > 数据库 > 关系型数据库 > 正文

如何用INSERT ON CONFLICT在原值上更新

期望起作用的sql INSERT INTO a VALUES (1,"2") ON CONFLICT (a) DO UPDATE SET b = concat(b, "2");

展开
收起
charlottelock 2023-03-22 16:38:44 316 0
3 条回答
写回答
取消 提交回答
  • 吆西

    这样写不好理解,不如把这个字段搞成唯一索引,然后使用replace into,顺溜的一批

    2023-04-11 14:48:38
    赞同 展开评论 打赏
  • 您可以在SET子句中使用原值和新值的组合来更新数据。例如,您可以使用以下SQL语句来在原值上更新b字段:

    INSERT INTO a VALUES (1,"2") ON CONFLICT (a) DO UPDATE SET b = concat(a.b, "2");

    这将在a字段冲突时更新b字段,将原值和新值组合在一起。

    2023-03-23 08:36:52
    赞同 展开评论 打赏
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    试试更改为:

    INSERT INTO a VALUES (1, '2')
    ON CONFLICT (a)
    DO UPDATE SET b = CONCAT(a.b, '2');
    
    2023-03-22 18:35:35
    赞同 展开评论 打赏
问答分类:
SQL

阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载