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=(select a.id from a where a.name=b.name);

时间: 2024-10-13 07:53:18

Oracle 中update set from 变通的写法的相关文章

恢复oracle中update或delete的数据

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

oracle中if/else的3种写法

1.标准sql规范 1 一.单个IF 2 1. 3 4 if a=... then 5 ......... 6 end if; 7 8 2. 9 10 if a=... then 11 ...... 12 else 13 .... 14 end if; 15 16 二.多个IF 17 18 if a=.. then 19 ...... 20 elsif a=.. then 21 .... 22 end if; 23 这里中间是“ELSIF”,而不是ELSE IF .这里需要特别注意 2.deco

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_

Oracle中的 UPDATE FROM 解决方法

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

Oracle中如何实现Mysql的两表关联update操作

在看<MySQL 5.1参考手册>的时候,发现MySQL提供了一种两表关联update操作.原文如下: UPDATE items,month SET items.price=month.price WHERE items.id=month.id; 在MySQL中构造表验证了一下 mysql> select * from test; +------+--------+ | id | salary | +------+--------+ | 1 | 100 | | 2 | 200 | | 3

《Oracle每日一练》Merge Into 语句代替Insert/Update在Oracle中的应用实战

转载自窃破天道 动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录时,就更新(Update),不存在数据时,就插入(Insert). 实战: 接下来我们有一个任务,有一个表T,有两个字段a,b,我们想在表T中做Insert/Update,如果存在,则更新T中b的值,如果不存在,则插入一条记录.在Microsoft的SQL语法中,很简单的一句判断就可

Oracle 中for update和for update nowait的区别

http://www.cnblogs.com/quanweiru/archive/2012/11/09/2762223.html 1.for update 和 for update nowait 的区别: 首先一点,如果只是select 的话,Oracle是不会加任何锁的,也就是Oracle对 select 读到的数据不会有任何限制,虽然这时候有可能另外一个进程正在修改表中的数据,并且修改的结果可能影响到你目前select语句的结果,但是因为没有锁,所以select结果为当前时刻表中记录的状态.

oracle 中的for update 和for update nowait

1.for update 和 for update nowait 的区别: 首先一点,如果只是select 的话,Oracle是不会加任何锁的,也就是Oracle对 select 读到的数据不会有任何限制,虽然这时候有可能另外一个进程正在修改表中的数据,并且修改的结果可能影响到你目前select语句的结果,但是因为没有锁,所以select结果为当前时刻表中记录的状态. 如果加入了for update, 则Oracle一旦发现(符合查询条件的)这批数据正在被修改,则不会发出该select语句查询,

5.oracle中一个字段中存储&#39;a&#39;,&#39;b&#39;与&#39;a&#39;与a的写法,存储过程中与之对应

select '''a'',''b''' from dual; --'a','b' select '''a''' from dual; --'a' select 'a' from dual; --a 5.oracle中一个字段中存储'a','b'与'a'与a的写法,存储过程中与之对应