sql数据库中,update能否实现像insert一样的批量操作?

发布于 2022-09-06 22:13:18 字数 649 浏览 21 评论 0

因为最近总是涉及到 批量update操作,不知道能否批量操作,只能在循环中一个一个的进行update,
所以想问下 sql数据库是否存在一种sql语句使得update能像insert一样批量修改数据。

例如:
账户表account_info: id,姓名name,余额balance

INSERT INTO account_info(name,balance) values('小红',0),('小明',10),('小白',15)

update是否也有类似的语句,比如我有一个数组

[
    {name: '小红', sum: 5},
    {name: '小明', sum: -8},
    {name: '小白', sum: -10}
]

名字和金额一一对应起来,进行一次性的批量更新。使得数据库中数据变为:

[
    {id:1, name: '小红', balance: 5},
    {id:2, name: '小明', balance: 2},
    {id:3, name: '小白', balance: 5}
]

不确定是否有这种方式。 所以提问一下。

如有知道,欢迎回答。
不知道得话,可以收藏一下,万一有人回答了呢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

柏拉图鍀咏恒 2022-09-13 22:13:18

-- 希望对你们有帮助 --

UPDATE account_info
  SET SUM = CASE NAME
    WHEN '小红' THEN 5
    WHEN '小明' THEN 2
    WHEN '小白' THEN 5
  END
WHERE id IN (1,2,3);
想念有你 2022-09-13 22:13:18

你这个需求就有问题,update本来就是更新值,插入的时候可以张三、李四、王五一次插入很多条数据,更新的时候你还能把张三的名字同时改成李四和王五?
不过如果更新的值是计算出来的话,比如balance统一加一,倒是可以一起更新,但你这组数据看不出有什么规律

浅忆流年 2022-09-13 22:13:18

如果用的是java开发,jdbc驱动有batch模式,专门用来执行批量的insert/update语句。

其他语言的话直接搜索一下batch mode吧,我找到一个相关的文章,请参考。
http://thedebuggers.com/mysql...

两人的回忆 2022-09-13 22:13:18

update一般支持from。如果你要更新balance的变化量保存在balance_change表中,那么就可以(postgresql):

update account set balance = account.balance + balance_change.balance
from balance_change
where account.name = balance_change.name
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文