下午好,
这句话有效......
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
中
答案 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)插入你想要的任何内容。