OMG,这是第三次贴这段代码了。 若是10以下还需要加上when not matched merge into A m using B n on (m.DD = n.MM) when matched then update set m.aa = n.bb;good luck!
update a set aa=(select bb from b where a.dd=b.mm)
用这个看看 UPDATE A SET A.aa = (SELECT B.bb FROM A, B WHERE A.DD = B.MM)
直接执行呀,在sqlplus 或者pl/sql developer command窗口或sql窗口
to:2楼的 我的数据库是9i 当 when not matched 我不想做 insert 操作,但做insert 系统提示 值不够?以下是我的SQLMERGE INTO wd_kokyaku_rireki k_rk USING m_jusyo m_jyo ON (m_jyo.yubin_no = k_rk.kibou_yubin_no AND m_jyo.jis_jusyo_cd = k_rk.kibou_jis_cd) WHEN MATCHED THEN UPDATE SET k_rk.kibou_town = m_jyo.town WHEN NOT MATCHED THEN INSERT VALUES (m_jyo.town);
再问:不用这个直接写SQL 不可以吗?
update a set aa=(select bb from b where a.dd=b.mm)
直接用update a set aa=(select bb from b where a.dd=b.mm)不就行了,用什么merge呀,酷了点儿
如果直接用update语句:update a set aa=(select bb from b where a.dd=b.mm) 若子查询里面搜索出来不是一个结果,那么如何赋值? ps:本人菜鸟
而且直接用update a set aa=(select bb from b where a.dd=b.mm) 那么如果B表内没有匹配的列那么A表的aa属性就会设为空
这样是不可以的,这个语句没那么简单,一个SQL 执行不了。你试一下就知道了!
不好意思楼上的,我用的是ORACLE 数据库,SQL SERVER 我没试过好用不!
修正下,9i下不加when not matched也可以的,我那个应该可以直接用。10楼白兄的sql可以改下应该也可以用: update a set aa=(select bb from b where a.dd=b.mm) where exists (select 1 from b where a.dd=b.mm);不过要保证select bb from b where a.dd=b.mm查出的记录是唯一的。
若是10以下还需要加上when not matched
merge into A m
using B n
on (m.DD = n.MM)
when matched then
update set m.aa = n.bb;good luck!
USING m_jusyo m_jyo
ON (m_jyo.yubin_no = k_rk.kibou_yubin_no AND m_jyo.jis_jusyo_cd = k_rk.kibou_jis_cd)
WHEN MATCHED THEN
UPDATE
SET k_rk.kibou_town = m_jyo.town
WHEN NOT MATCHED THEN
INSERT
VALUES
(m_jyo.town);
若子查询里面搜索出来不是一个结果,那么如何赋值?
ps:本人菜鸟
update a set aa=(select bb from b where a.dd=b.mm) where exists (select 1 from b where a.dd=b.mm);不过要保证select bb from b where a.dd=b.mm查出的记录是唯一的。