ORA-00905:在sql中合并期间缺少关键字

时间:2014-11-05 10:12:12

标签: sql oracle

下午好,

这句话有效......

merge into temp using(select * from emp where deptno=10) s on (temp.empno=s.empno)
when matched then update set temp.sal=s.sal*0.1 where sal > 300
when not matched then insert (temp.ename,temp.sal )values (s.ename,s.sal*0.1) where (s.sal<300);

但是当我尝试使用以下合并命令时。我最终错过了关键字错误

sql> **merge into temp using (select * from emp where deptno=10) on (1=1);**

我使用类似于emp表的结构创建了temp

有人可以帮帮我吗。我想使用merge命令

实际将emp表的内容复制到临时表where deptno=10

1 个答案:

答案 0 :(得分:2)

merge into temp target 
using (select * from emp where deptno=10) source on (target.empid = source.empid)
when matched then update set target.sal=source.sal*0.1;

你不能在MERGE上使用ON(1 = 1)因为MERGE是确定性的。

  

MERGE是一个确定性的陈述。您无法更新同一行   目标表在同一MERGE语句中多次。

然而,插入并非如此。例如,你可以使用ON(1 = 0)插入你想要的任何内容。