sql - 如何将同一表上的两个单独的 SQL 更新语句合并为一个命令?
问题描述
UPDATE table SET val1 = val1 + 1 where (val1 < $1 AND val1 >= ($1-$3));
update table set (val1,val2) = (val1 - $3, val2 + 1) WHERE val3 = $2 RETURNING %s
不幸的是,这给出了错误“无法将多个命令插入准备好的语句”。有没有办法将这两个语句合并为一个?
解决方案
是的。在 Postgres 中,您可以使用 CTE:
with u1 as (
update table set val1 = val1 + 1 where (val1 < $1 AND val1 >= ($1-$3))
),
u2 as (
update table set (val1,val2) = (val1 - $3, val2 + 1) WHERE val3 = $2 RETURNING %s
)
select *
from u2;
推荐阅读
- python - 从跨度标签获取文本时返回空列表(网络抓取)
- linux - 如何为私有 CA 设置 OCSP 服务器并且查询很少
- powershell - PowerShell 中的 Git Config 双引号
- python - django-admin站点在不同端口显示问题
- excel - 如何在 VBA 中获取当前计算机的 LDAP OU 目录以在 excel 中使用?
- javascript - 当我想要小写时,为什么我的正则表达式返回大写?
- xcode - React native - 在 xcode 中看不到 podfile
- split - 如何在 BigQuery 中使用 SPLIT 和 CROSS APPLY 函数
- jupyter-notebook - 在没有终端的情况下访问远程 jupyter 笔记本?
- ios - 如何阻止 SwiftUI 应用程序重置表单数据?