问题描述:oracle中有一个表T,其中有三个字段:a b c,现在从外部数据源中提取一个数据与T表a字段已有的数据做比较,如果数据库中有记录,则不做操作,如果没有,则插入该数据。不知道描述清楚了没有,本人菜鸟,希望高手们多多指教。
解决方案 »
- Oralce 中的字段类型varchar2取值出来总是带“”
- 存储过程调用问题......急!!!!
- 服务器字符集是WE8ISO8859P1,属于单字符集,一个汉字占两个字节。我的oracle版本是8.1.7或7.3.4。有没有一个能够完全转换WE8ISO8859P1的父
- 100分请教 , 如何通过SQL语句得到类似于Listener.log文件中的信息 , 包括登入用户名, 登入program ,ip , pc机器名 , 登入时间 ,所做的动
- 高分求一存储过程,各位高手帮忙~~~~~~~~~~~~!
- 紧急求救:ORA-00093: shared_pool_reserved_size must be between 5000 and 8388608错误
- dmp文件能够进行分析么??
- 表空间的扩展问题
- 如何在实现连个异地oracle服务器的数据同步
- AB两组数据,如何使用一个sql实现将两个字段所有有关联的数据归类到一起
- 分组计算数量并取每组的最小时间。
- 各位朋友,求sql,帮个忙
网上的例子是这样的:
MERGE INTO T T1
USING S T2
ON (T1.a = T2.a)
WHEN NOT MATCHED THEN
INSERT
VALUES (T2.a, T2.b,T2.c);
但其中的S是数据库的另一张表,我现在已经从外部数据源中取到了数据,并不是来自另一张表,该如何处理?
正常我的数据库插入的语句是这样的:
insert into T(a,b,c)values('s1','s2','s3')
s1,s2,s3均为外部数据源,并不是来自于当前数据库的表中。如何实现条件插入?
using (select 100 z1,202 z2 from dual) tb
on(tb.z1=g.z1 and tb.z2=g.z2)
when not matched then
insert
values (tb.z1,tb.z2)
表名是tb 有两列 z1,z2 一行 100,200
dual(tb)是临时表?不需要先在数据库里创建这个临时表吗?
(
a varchar(20),
b varchar(20),
c varchar(20)
);
create table T
(
a varchar(20),
b varchar(20),
c varchar(20)
);insert into A values('1','2','3');
insert into A values('2','2','3');
insert into A values('3','2','3');
insert into A values('4','2','3');
insert into T values('1','2','3');
insert into T values('2','2','3');
insert into T values('5','2','3');
insert into T values('6','2','3');select * from A;
select * from T;insert into A
(a,
b,
c
)
select t1.a,t1.b,t1.c from T t1 where t1.a not in (select a from A);
试验过这种方法了,会发生重复插入的情况,怎么回事?where语句没用么?