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的那句不是很理解,所以请问下!
请问这句我可以用以下语句代替吗?update tlhq_temp,user_basic set tlhq_temp.bz=1 where user_basic.newaccname=user_basic.cn本来想用SELECT在加UPDATE 来实现,后来想想UPDATE应该也可以!但是对ORacle的那句不是很理解,所以请问下!
解决方案 »
- Oracle数据块校验和如何计算_请教大牛
- sybase与oracle的语法差别
- Oracle 子表汇总至主表的写法
- SQL行列转换
- 新手关于索引的问题。为何在以下情况下,建B*-树索引占用100K空间,而位图索引只占16K。我是新手,请大家进来看看吧。
- Oracle的视频资料
- wmsys.wm_concat(content) content 后,汉字乱码
- 根据天来算周、月、季、年,求助!!!
- 求助:如何从Sql Server 2000导出数据到Oracle
- 一个java程序传一个insert语句出错,怎么能在日志文件查看到出错信息?急
- 急!求助!如何列变行,去除重复数据
- 将字符串 转换成时间型!![
merge into 是批理插入数据到表中....
你用UPDATE肯定是不对的!
支持这样子的操作嘛?update tlhq_temp,user_basic set tlhq_temp.bz=1 where user_basic.newaccname=user_basic.cn
如果功能一样的话为什么不用insert into 插入表中呢?
merge into语句后面加了一个更新,他前面应该是一个判断
update set a.bz=1
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字段值,在目标表中不存在),
-- 则将源表中这样的记录插入目标表-- 简单理解为一句话:有:则更新;无:则插入!
http://topic.csdn.net/u/20110824/00/a26a1f92-75da-4335-aac3-152b2fe448de.html
我就写了这一句,现在我还少一个插入的语句