在PostgreSQL中的一个查询中使用不同的主键更新多行?

在PostgreSQL中的一个查询中使用不同的主键更新多行?,第1张

概述我必须更新PostgreSQL 9.1中许多行的许多列.我目前正在使用许多不同的UPDATE查询,每个查询工作在不同的行(基于主键): UPDATE mytable SET column_a = 12, column_b = 6 WHERE id = 1;UPDATE mytable SET column_a = 1, column_b = 45 WHERE id = 2;UPDATE myt 我必须更新Postgresql 9.1中许多行的许多列.我目前正在使用许多不同的UPDATE查询,每个查询工作在不同的行(基于主键):
UPDATE mytable SET column_a = 12,column_b = 6 WHERE ID = 1;UPDATE mytable SET column_a = 1,column_b = 45 WHERE ID = 2;UPDATE mytable SET column_a = 56,column_b = 3 WHERE ID = 3;

我必须做几千个这样的查询.

有没有可以在Postgresql中的一个查询中“批量更新”大量的行?如果你正在使用INSERT,你可以一次插入多行:(INSERT INTO mytable(column_a,column_b)VALUES((12,6),(1,45));),有UPDATE吗?

就像是:

UPDATE mytable SET (ID,column_a,column_b) FROM VALUES ( (1,12,(2,1,45),(3,56,3),… )

??

重要的是每个“VALUE”只会更新一行(基于WHERE ID =).每行将具有相同的固定数量的列,需要更新,但每行将为每列具有不同的值,因此UPDATE mytable SET column_a = 12,column_b = 6 WHERE ID IN(1,2,3);不行

是的,您可以(通常是sql中的首选项)一次更新多个行.有几种方法可以做到这一点,但最可读性和优雅性我认为是使用带有ID和值的派生表:
update mytable as m set    column_a = c.column_a,column_b = c.column_bfrom (values    (1,3)) as c(ID,column_b)where c.ID = m.ID

不太可读,但更明显的解决办法就是用例:

update mytable set    column_a = case ID when 1 then 12 when 2 then 1 when 3 then 56 end,column_b = case ID when 1 then 6 when 2 then 45 when 3 then 3 endwhere ID in (1,3)
总结

以上是内存溢出为你收集整理的在PostgreSQL中的一个查询中使用不同的主键更新多行?全部内容,希望文章能够帮你解决在PostgreSQL中的一个查询中使用不同的主键更新多行?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1170159.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-02
下一篇2022-06-02

发表评论

登录后才能评论

评论列表(0条)

    保存