DB2 Merge 语句的使用
2009-11-06 10:37
731 查看
----start
DB2 Merge 语句的作用非常强大,它可以将一个表中的数据合并到另一个表中,在合并的同时可以进行插入、删除、更新等操作。我们还是先来看个简单的例子吧,假设你定义了一个雇员表(employe),一个经理表(manager),如下所示:
上面的处理是可以的,但是我们还可以有更简单的方法,就是用Merge语句,如下所示:
不仔细的朋友可能没有看出上面两条语句的区别,哈哈,请仔细对比一下这两条语句。上面的语句中多了ELSE IGNORE语句,它的意思正如它英文的意思,其它情况忽略不处理。如果你认为理论上应该不存在EM.SALARY>MA.SALARY的数据,如果有,说明有问题,你想抛个异常,怎么办?如下:
以上简单介绍了Merge语句的使用,它的应用不只是上面介绍的情况,其实它可以应用在很多其他语句不好处理情况,这需要你去发现,记住熟能生巧。
---更多参见:DB2 SQL 精萃
----声明:转载请注明出处。
----last updated on 2009.11.6
----written by ShangBo on 2009.11.6
----end
DB2 Merge 语句的作用非常强大,它可以将一个表中的数据合并到另一个表中,在合并的同时可以进行插入、删除、更新等操作。我们还是先来看个简单的例子吧,假设你定义了一个雇员表(employe),一个经理表(manager),如下所示:
--更新存在的 UPDATE EMPLOYE AS EM SET SALARY=(SELECT SALARY FROM MANAGER WHERE MANAGERID=EM.EMPLOYEID) WHERE EMPLOYEID IN ( SELECT MANAGERID FROM MANAGER ); ---插入不存在的 INSERT INTO EMPLOYE (EMPLOYEID,NAME,SALARY) SELECT MANAGERID,NAME,SALARY FROM MANAGER WHERE MANAGERID NOT IN ( SELECT EMPLOYEID FROM EMPLOYE );
上面的处理是可以的,但是我们还可以有更简单的方法,就是用Merge语句,如下所示:
MERGE INTO EMPLOYE AS EM USING MANAGER AS MA ON EM.EMPLOYEID=MA.MANAGERID WHEN MATCHED AND EM.SALARY<MA.SALARY THEN UPDATE SET EM.SALARY=MA.SALARY WHEN NOT MATCHED THEN INSERT VALUES (MA.MANAGERID,MA.NAME,MA.SALARY);
不仔细的朋友可能没有看出上面两条语句的区别,哈哈,请仔细对比一下这两条语句。上面的语句中多了ELSE IGNORE语句,它的意思正如它英文的意思,其它情况忽略不处理。如果你认为理论上应该不存在EM.SALARY>MA.SALARY的数据,如果有,说明有问题,你想抛个异常,怎么办?如下:
MERGE INTO EMPLOYE AS EM USING MANAGER AS MA ON EM.EMPLOYEID=MA.MANAGERID WHEN MATCHED AND EM.SALARY<MA.SALARY THEN UPDATE SET EM.SALARY=MA.SALARY WHEN MATCHED AND EM.SALARY>MA.SALARY THEN DELETE WHEN NOT MATCHED THEN INSERT VALUES (MA.MANAGERID,MA.NAME,MA.SALARY) ELSE IGNORE;
以上简单介绍了Merge语句的使用,它的应用不只是上面介绍的情况,其实它可以应用在很多其他语句不好处理情况,这需要你去发现,记住熟能生巧。
---更多参见:DB2 SQL 精萃
----声明:转载请注明出处。
----last updated on 2009.11.6
----written by ShangBo on 2009.11.6
----end
相关文章推荐
- DB2的MERGE语句使用注意事项!
- DB2的MERGE语句使用注意事项!
- SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete)
- 使用Oracle 10g MERGE语句更新数据行
- DB2 V9.7 语句集中器的使用(一)
- SQLServer 2008中SQL增强之三 Merge(在一条语句中使用
- DB2 公共表表达式(WITH语句的使用)
- DB2 单张表 merge语句
- DB2 V9.7 语句集中器的使用(二)
- SQL语句DB2的varchar型使用between???
- MERGE语句的使用(复制表)
- SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete)
- SQL Server Merge语句的使用
- Oracle中MERGE语句的使用
- AIX 使用crontab 调用shell脚本 db2语句调用失败
- 使用DB2的with as 语句 实现树的递归查询
- 使用Merge优化改写一个update语句
- db2使用sql语句查询表的字段类型
- sql2008使用merge语句实现数据差异传输
- MERGE语句的使用