在日常开发中经常会遇到先查询 看看结果集有没有如果有就执行操作没有又执行咋样的操
(1).Oracle的MERGE
MERGE INTO --要插入的表 别名
USING (
--查询的SQL
)别名 ON
--(连接条件)
WHEN MATCHED THEN --如果符合条件
UPDATE SET
WHEN NOT MATCHED THEN
INSERT ()VALUES();--不符合就插入
其实就是和java里面的if..else..一样。很简答下面一个案例
有俩个表EMP和EMP1结构一样,EMP1里面有两条数据
CREATE TABLE EMP (
ID NUMBER NOT NULL ,
NAME VARCHAR2(20 BYTE) NULL ,
PASSWORD VARCHAR2(20 BYTE) NULL ,
)
看下面语句
查询EMP 如果EMP.ID=EMP1.ID就update如果EMP.ID不等于EMP1.ID 就把EMP查出来的数据插入到EMP1里面。
注意: update的时候不要把主键也更新了!!!!!!!!!!!!,不然会报错,你懂的。
MERGE INTO EMP1 T
USING (
SELECT A.ID,A.NAME,A.PASSWORD FROM EMP A
)S ON
(T.ID=S.ID)
WHEN MATCHED THEN
UPDATE SET
T.NAME=S.NAME,
T.PASSWORD=S.PASSWORD
WHEN NOT MATCHED THEN
INSERT (
ID,
NAME,
PASSWORD
)VALUES(
S.ID,
S.NAME,
S.PASSWORD
);
(2).Mysql的replace
replace的作用和MERGE功能一样,而且更简单
replace into EMP values(?,?,?,?,?)
没有就插,有就更新