龙空技术网

oracle一点小技巧

文话教育 425

前言:

此刻我们对“adonet更新oracle数据库”大约比较注重,姐妹们都想要了解一些“adonet更新oracle数据库”的相关内容。那么小编也在网络上收集了一些对于“adonet更新oracle数据库””的相关知识,希望同学们能喜欢,兄弟们一起来了解一下吧!

甲骨文公司总部

​第一点,在使用oracle中,更新数据我觉得应该尽量使用merge into 而不是传统的update语句,因为使用merge into可以使更新逻辑更清晰,而且还能根据条件进行插入操作。

场景如下:将B表中的code=A表中code的部分的score值更新,即两表code相等时,A表的score值=B表的score值,而code在B 表中存在,而不在A表的记录,插入到A表中

merge into A a

using B b

on (a.code=b.code)

when matched then --当满足匹配条件a.code=b.code时

a.score=b.score

when not matched then --当不满足匹配条件a.code=b.code时,如果不需要插入操作,这部分可以不写

insert (a.code,a.score) values (b.code,b.score)

第二点,是无关哪种关系型数据库的,场景为:有A,B,C,D四张表,B,C,D表都用code字段,在A表中创建一个final_code,至于这个final_code的值,如果B.code存在,则final_code=B.code;如果B.code不存在,C.code存在,则final_code=C.code;如果B.code不存在,C.code不存在,D.code存在,则final_code=D.code;否则final_code='',另外,B,code,C.code,D.code都不是每条记录有有非空值的。

对于这类有优先级的选择更新问题,可以不用复杂的逻辑实现各种判断,而是用多条简单的更新语句即可,不过要注意顺序必须如下:

update A a set a.final_code = D.code where D.code is not null

update A a set a.final_code = C.code where C.code is not null

update A a set a.final_code = B.code where B.code is not null

标签: #adonet更新oracle数据库