oracle - Oracle SQL 递归查询
问题描述
对此有疑问 - 有一个表更新,我必须回填超过一年的数据,并且由于我必须每天更新代码(每天需要 4-5 分钟),有谁知道我是怎么做到的可以通过设置日期列表更有效地做到这一点,这样我就可以在后台做到这一点。
因此,例如,如果我设置了一个名为 :reqdate 的变量,它是日期字段,并且我有一个来自查询的日期列表(例如 01/01/20、02/01/20... 04/04/20)我可以做些什么来让 sql 重复运行它,例如:regdate=01/01/20,然后当它完成后它会自动执行 02/01/20 等等
谢谢
解决方案
如果我理解正确,最简单的方法是使用merge
如下子句:
merge into dest_table t
using (
select date'2020-01-01'+N as dt
from xmltable('0 to 10' columns N int path '.')
) dates
on (t.date_col = dates.dt)
whem matched then update
set ...
尽管我认为您需要将更新重新设计为简单的更新,例如
update (select ... from) t
set ...
where t.dt between date'2020-01-01' and date'2020-01-20'
推荐阅读
- laravel - 如何解决需要多个版本的相同依赖项的 NPM 问题?
- apache - Apache2 - 如何禁用虚拟主机上的目录列表?
- java - 将会话值附加到 Java 中的数组
- python - Python上的KeyError检查幅度
- android - ViewModel - 在运行时观察 LiveData 时更改方法的参数?
- assembly - PowerPC ASM:insrdi 指令
- sql-server-2008 - 在 SQL 中使用 CTE 创建表
- go - 框架 GoColly - 重定向到 HTTPS 不起作用
- git - 如何解决拉取请求中的冲突?
- java - Swing 应用程序一致性检查中的会话管理