假设有A,B 两张表,结构相同,但数据不同,现在需要将表B中的数据同步到表A 中,即B中存在的数据在A中不存在,
则直接插入到A中,如果两张表中都存在,刚将B中的数据更新到A中,假设两表的结构为(ColA NUMBER PRIMARY KEY, ColB VARCHAR2(30)), 请写一个SQL语句实现
则直接插入到A中,如果两张表中都存在,刚将B中的数据更新到A中,假设两表的结构为(ColA NUMBER PRIMARY KEY, ColB VARCHAR2(30)), 请写一个SQL语句实现
解决方案 »
- left join的一个奇怪问题
- sql问题 如何将两张表合为一张视图?
- ORACLE 11G EXPDP导出报错:无法打开日志文件
- 将sql server2000的表导入到oracle8.0中,除了字段和数据,为什么主键和索引等等都没了
- 用户权限问题
- LINUX sqlplus怎么不能访问WINDOWS 2000 SERVER ORACLE服务器?
- 第一次用Oracle,用PLSQL-Dev连接服务器时提示:监视器无法连接描述符中的SID.如何解决?
- 第一次在Oracle中写触发器,请求帮助!
- 急:OEM怎么启动?oracle8i(R8.1.5) for Linux
- 请教一个sql语句问题。
- 统计一个表的字段数量,有两个条件限制
- dbms_job任务不能定时执行-------在线求解
MERGE INTO table_name alias1
USING (table|view|sub_query) alias2
ON (join condition)
WHEN MATCHED THEN
UPDATE table_name
SET col1 = col_val1,
col2 = col2_val
WHEN NOT MATCHED THEN
INSERT (column_list) VALUES (column_values);
--实例 在一个同时存在Insert和Update语法的Merge语句中,总共Insert/Update的记录数,就是Using语句中alias2的记录数。
MERGE INTO T T1
USING (SELECT '1001' AS a,2 AS b FROM dual) T2
ON ( T1.a=T2.a)
WHEN MATCHED THEN
UPDATE SET T1.b = T2.b
WHEN NOT MATCHED THEN
INSERT (a,b) VALUES(T2.a,T2.b);
create table TblA(ColA NUMBER PRIMARY KEY, ColB VARCHAR2(30));
create table TblB(ColA NUMBER PRIMARY KEY, ColB VARCHAR2(30));insert into TblA
select * from TblB b where b.cola not in(select a.cola from TblA a group by a.cola)
update TblA a Set (a.ColB) =(select b.Colb from TblB b where a.cola=b.cola)
create table TblA(ColA NUMBER PRIMARY KEY, ColB VARCHAR2(30));
create table TblB(ColA NUMBER PRIMARY KEY, ColB VARCHAR2(30));insert into TblA
select * from TblB b where b.cola not in(select a.cola from TblA a group by a.cola)
update TblA a Set (a.ColB) =(select b.Colb from TblB b where a.cola=b.cola)