merge into tlhq_temp a using user_basic b on (a.newaccname=b.cn) when MATCHED then update set a.bz=1这句是oracle数据库用的。
请问这句我可以用以下语句代替吗?update tlhq_temp,user_basic set tlhq_temp.bz=1 where user_basic.newaccname=user_basic.cn本来想用SELECT在加UPDATE 来实现,后来想想UPDATE应该也可以!但是对ORacle的那句不是很理解,所以请问下!

解决方案 »

  1.   


    merge into 是批理插入数据到表中....
    你用UPDATE肯定是不对的!
      

  2.   

    MYSQL:
    支持这样子的操作嘛?update tlhq_temp,user_basic set tlhq_temp.bz=1 where user_basic.newaccname=user_basic.cn
      

  3.   

    merge into是插入数据表中数据。
    如果功能一样的话为什么不用insert into 插入表中呢?
      

  4.   

    在mysql是支持insert into,而update是更新数据。
      

  5.   

    -- 操,还来问,自己先去了解Oracle merge into 的用法嘛,不是已经告诉你啦:可以吗?
      

  6.   


    merge into语句后面加了一个更新,他前面应该是一个判断
    update set a.bz=1
      

  7.   

    -- 不是早就说了:要你先去了解merge into 的用法嘛,还在啰嗦,靠!Merge into dept_2 d  using dept de 
    on(d.id=de.id)
    when matched then
    update set
    d.name=de.name
    when not matched then
    insert (id,name)
    values (de.id,de.name);-- 解释
    -- *1). Merge into dept_2 d  using dept de  
    --      从源表 dept (别名 de) 往 dept_2 表(别名d)中插入或更新数据-- *2). on(d.id=de.id) :源表(dept)与目标表(dept_2)的连接条件是 (dept_2.id=dept.id)-- *3). when matched then update set d.name=de.name
    --     当目标表找到与源表匹配的记录行(匹配条件:dept_2.id=dept.id ),
    --     则更新目标表(dept_2) 的 name字段值为 源表 (dept) 的name字段值-- *4). when not matched then insert (id,name) values (de.id,de.name)
    --     如果没有找到匹配记录(即:源表记录的id字段值,在目标表中不存在),
    --     则将源表中这样的记录插入目标表-- 简单理解为一句话:有:则更新;无:则插入!
      

  8.   

    -- 要看详细操作代码,请参考:
    http://topic.csdn.net/u/20110824/00/a26a1f92-75da-4335-aac3-152b2fe448de.html
      

  9.   

    这下明白了,update tlhq_temp,user_basic set tlhq_temp.bz=1 where user_basic.newaccname=user_basic.cn
    我就写了这一句,现在我还少一个插入的语句