发布网友 发布时间:2022-04-08 07:48
共5个回答
懂视网 时间:2022-04-08 12:09
参数source和target代表两个结构相同但数据不同的表,要求以主键为标准用source更新target,比如table1和table2的主键都是A和B,数据如下:
用table2更新table1时,MERGE语句应当如下:
MERGE INTO table1 as t USING table2 as s ON t.A=s.A and t.B=s.B WHEN MATCHED THEN UPDATE SET t.C=s.C,t.D=s.D WHEN NOT MATCHED THEN INSERT VALUES(s.A,s.B,s.C,s.D)更新后table1应当如下: 集算器代码:
A1,A2: 从系统表中读出表source的主键存入变量pks,计算结果为集合[”A”,”B”]。各种数据库获得主键的方法不同,这里以MSSQL为例。
A3,A4:读出source的完整字段,columns的计算结果为[”A”,”B”,”C”,”D”]。
A5:动态生成MERGE语句。pks.(…)是循环函数,可对集合(包括结果集)的成员依次计算,计算中可用~引用循环变量,用#引用循环计数。
A6:执行MERGE语句。
版权声明:本文为博主原创文章,未经博主允许不得转载。
简化动态MERGE的SQL计算
标签:动态merge sql 简化 集算器
热心网友 时间:2022-04-08 09:17
你写的SQL跟你的描述不符合,不知你是不是说不管存在不存在记录照样插入.热心网友 时间:2022-04-08 10:35
insert into table_b热心网友 时间:2022-04-08 12:10
oracle可以用merge into实现有则更新,无则插入追问我用的PB,sybase....
热心网友 时间:2022-04-08 14:01
table_b是已经存在的就不插入 是这个意思吗?如果是的话直接not exist啊追问怎么样用呢》?