oracle中insert如何带条件添加数据?
2个回答
展开全部
如果
数据不存在,那么执行插入的操作。
数据已经存在, 那么就不插入(可能是只做更新处理, 也可能什么事情都不干)
下面是一个例子代码:
--源表
CREATETABLEtest_from(idINT,valVARCHAR(20));
--目标表
CREATETABLEtest_to(idINT,valVARCHAR(20));
--插入源表
INSERTINTOtest_fromVALUES(1,'A');
INSERTINTOtest_fromVALUES(2,'B');
--合并源表到目标表
MERGEINTOtest_to
USINGtest_from
ON(test_to.id=test_from.id)--条件是id相同
WHENMATCHEDTHENUPDATESETtest_to.val=test_from.val--匹配的时候,更新
WHENNOTMATCHEDTHENINSERTVALUES(test_from.id,test_from.val)--源表有,目标表没有,插入
--第一次检查目标表数据.
SQL>SELECT*FROMtest_to;
IDVAL
------------------------------
1A
2B
--更新源表
UPDATEtest_fromSETval='A2'WHEREid=1;
--删除源表
DELETEFROMtest_fromWHEREid=2;
--插入源表
INSERTINTOtest_fromVALUES(3,'C');
--合并源表到目标表
MERGEINTOtest_to
USINGtest_from
ON(test_to.id=test_from.id)--条件是id相同
WHENMATCHEDTHENUPDATESETtest_to.val=test_from.val--匹配的时候,更新
WHENNOTMATCHEDTHENINSERTVALUES(test_from.id,test_from.val)--源表有,目标表没有,插入
--再次检查目标表数据.
SQL>SELECT*FROMtest_to;
数据不存在,那么执行插入的操作。
数据已经存在, 那么就不插入(可能是只做更新处理, 也可能什么事情都不干)
下面是一个例子代码:
--源表
CREATETABLEtest_from(idINT,valVARCHAR(20));
--目标表
CREATETABLEtest_to(idINT,valVARCHAR(20));
--插入源表
INSERTINTOtest_fromVALUES(1,'A');
INSERTINTOtest_fromVALUES(2,'B');
--合并源表到目标表
MERGEINTOtest_to
USINGtest_from
ON(test_to.id=test_from.id)--条件是id相同
WHENMATCHEDTHENUPDATESETtest_to.val=test_from.val--匹配的时候,更新
WHENNOTMATCHEDTHENINSERTVALUES(test_from.id,test_from.val)--源表有,目标表没有,插入
--第一次检查目标表数据.
SQL>SELECT*FROMtest_to;
IDVAL
------------------------------
1A
2B
--更新源表
UPDATEtest_fromSETval='A2'WHEREid=1;
--删除源表
DELETEFROMtest_fromWHEREid=2;
--插入源表
INSERTINTOtest_fromVALUES(3,'C');
--合并源表到目标表
MERGEINTOtest_to
USINGtest_from
ON(test_to.id=test_from.id)--条件是id相同
WHENMATCHEDTHENUPDATESETtest_to.val=test_from.val--匹配的时候,更新
WHENNOTMATCHEDTHENINSERTVALUES(test_from.id,test_from.val)--源表有,目标表没有,插入
--再次检查目标表数据.
SQL>SELECT*FROMtest_to;
追问
这没有空格的语句 ,看的眼睛疼 - -
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |