oracle中Update方法

1、两表(多表)关联update -- 被修改值由另一个表运算而来

  update customers a

  set city_name=(select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id)

  where exists (select 1

  from tmp_cust_city b

  where b.customer_id=a.customer_id)

  实例: 

  update bd_psndoc
  set bd_psndoc.indutydate=(select begindate from (select a.pk_psnbasdoc as pk_psnbasdoc,
  max(b.begindate) as begindate
  from temp_psnbasdoc a left join hi_psndoc_deptchg b
  on a.pk_psnbasdoc=b.pk_psnbasdoc and a.recordnum=b.recordnum
  group by a.pk_psnbasdoc) tt where tt.pk_psnbasdoc=bd_psndoc.pk_psnbasdoc)
  where exists(select 1 from (select a.pk_psnbasdoc as pk_psnbasdoc,
  max(b.begindate) as begindate
  from temp_psnbasdoc a left join hi_psndoc_deptchg b
  on a.pk_psnbasdoc=b.pk_psnbasdoc and a.recordnum=b.recordnum
  group by a.pk_psnbasdoc) tt where tt.pk_psnbasdoc=bd_psndoc.pk_psnbasdoc)
  and pk_psncl=‘00015T100000000003M2‘ and indutydate is null

时间: 2024-11-08 22:28:04

oracle中Update方法的相关文章

Oracle 中update set from 变通的写法

群里有人问:oracle中  现在有表a(id,name )   表b(item_id,name,a_id)如何将 符合a.name=b.name  的a表的id更新到b表中的a_id 我说这样的:update b set a_id=a.id from a inner join b on a.name=b.name 后来那哥们执行了下,一直报ORA-00933,后来才知道Oracle中没有update set from这个语法,不过可以变通的实现 update b set b.a_id=(sel

Unity3d中Update()方法的替身

在网上看到一些资料说Unity3d的Update方法是如何如何不好,影响性能.作为一个菜鸟,之前我还觉得挺好用的,完全没用什么影响性能的问题存在.现在发现确实有很大的问题,我习惯把一大堆检测判断放在Update中去执行,这种检测判断每帧都在执行,而往往其中的方法可能只执行一次或几次,这样确实对性能有很大的影响. 下面这种是我经常使用的写法: [javascript] view plaincopyprint? function Update () { if (!wait) { transform.

mongodb中update方法的upsert和multi

mongodb中的update的形式是这样的: db.collectionName.update(query, obj, upsert, multi); 对于upsert(默认为false):如果upsert=true,如果query找到了符合条件的行,则修改这些行,如果没有找到,则追加一行符合query和obj的行.如果upsert为false,找不到时,不追加. 对于multi(默认为false): 如果multi=true,则修改所有符合条件的行,否则只修改第一条符合条件的行.

oracle中merge方法

先看SQL语句:merge into employee e using emps em on (e.emp_id=em.emp_id) when matched then  update set e.emp_name=em.emp_name when not matched then insert values (em.emp_id,em.emp_name) 1.将emps表中的数据更新到employee表中,以主键匹配,如果主键匹配就执行update语句,如果不匹配则执行insert语句,需要

oracle中REGEXP_SUBSTR方法的使用

近期在做商旅机票平台,遇到这样一个问题: 有一张tt_ticket表,用来存机票信息.里边有一个字段叫schedule,表示的是行程,存储格式为:北京/虹桥 由于公司位于上海.而上海眼下有两个机场:浦东和虹桥.所以对于出发地或到达地为上海的机票来说,行程中会存虹桥或浦东,当然.有时候可能也会直接存上海(可能性非常小.但不代表没有).这样,行程对于出发地为上海的行程来说.可能有下面几种可能: a.虹桥/北京 b.浦东/北京 c.上海/北京 如今要实现搜索出发城市为上海时,把这三条信息所有拉出来.

恢复oracle中update或delete的数据

问题描述 比如在开发人员对employee表进行一个update语句,但更新完之后,才发现更新的语句有误,需要撤销刚才的update操作.如(update employee e set e.block='0300100011000000248' wheree.block='0300100011000000240'; 更新了10条数据) 1.如果在很短的时间内,可以查询数据库中的versions,记录短时间内的employee表中的update.delete.insert的操作.(时间多长取决于数

Oracle中的 UPDATE FROM 解决方法

在表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.象sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来.虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式中引用要更新的表以外的其它数据.例如: UPDATE Table2SET Table2.ColB = Table2.ColB + Table1.ColBFROM Table2INNER JOIN Table1ON (Table2.Co

向oracle中的表插入数据的方法

向oracle中的表插入数据的方法有以下几种: 假设表名为User 第一种方法:select t.*,rowid from User t;-->点击钥匙那个标记就可向表中添加数据 第二种方法:select t.*,rowid from User t for update;-->点击钥匙那个标记就可向表中添加数据 第三种方法:在oracle中的table表中选中你要添加数据的那个表-->点击右键-->选中Edit data-->就可向表中添加数据 第四种方法:通过DAO层来添加

Oracle中没有 if exists(...)的解决方法

http://blog.csdn.net/hollboy/article/details/7550171对于Oracle中没有 if exists(...) 的语法,目前有许多种解决方法,这里先分析常用的三种,推荐使用最后一种 第一种是最常用的,判断count(*)的值是否为零,如下declare  v_cnt number;begin  select count(*) into v_cnt from T_VIP where col=1;  if v_cnt = 0 then    dbms_o