互联网服务数据库

能否用merge 实现这样的功能

merge into zy.temp3 t1 using  zy.temp4 t2on t1.c1 = t2.c1when matched thenupdate set t1.c2 = char(t2.c2)when not matched thenupdate set t1.c2 = '未知'显示全部
merge into zy.temp3 t1 using  zy.temp4 t2
on t1.c1 = t2.c1
when matched then
update set t1.c2 = char(t2.c2)
when not matched then
update set t1.c2 = '未知'收起
参与20

查看其它 19 个回答yangyutao的回答

MERGE INTO table
USING data_source
ON (condition)
WHEN MATCHED THEN update_clause
WHEN NOT MATCHED THEN insert_clause;

MERGE INTO employee AS e
          USING (SELECT empno, firstnme, midinit, lastname, workdept, phoneno,
                  hiredate, job, edlevel, sex, birthdate, salary FROM my_emp) AS m
        ON e.empno = m.empno
        WHEN MATCHED THEN
          UPDATE SET (salary) = (m.salary)
        或
          delete
        WHEN NOT MATCHED THEN
          INSERT (empno, firstnme, midinit, lastname, workdept, phoneno,
                  hiredate, job, edlevel, sex, birthdate, salary)
          VALUES (m.empno, m.firstnme, m.midinit, m.lastname,
                  m.workdept, m.phoneno, m.hiredate, m.job, m.edlevel,
                  m.sex, m.birthdate, m.salary)

可以参考这个例子试试 对上面 SQL 的解释如下

使用表 my_emp 联合表 employee,根据两个表的比照(ON e.empno = m.empno),
如果存在这样的记录,则使用 表 my_emp 的 salary 值来更新表 employee 的 salary 的值或删除;
如果不存在符合条件的记录,则将表 my_emp 中的数据插入到表 employee 中去。
可以理解为 先更新数据,更新不了就插入数据或删除。
可以省略其中一个update、delete 或insert子句
2009-04-14
浏览626

回答者

yangyutao 最近回答过的问题

回答状态

  • 发布时间:2009-04-14
  • 关注会员:0 人
  • 回答浏览:626
  • X社区推广