MySQL实现Oracle的merge函数
程序员文章站
2024-01-28 11:00:46
...
MySQL实现Oracle的merge函数
先建两个实验表
CREATE TABLE `test_kxz1` (
`cusno` varchar(10) NOT NULL,
`name` varchar(10) DEFAULT NULL,
`address` varchar(10) DEFAULT NULL,
`modifydate` datetime DEFAULT NULL,
`salary` decimal(20,0) DEFAULT NULL,
PRIMARY KEY (`cusno`)
)
CREATE TABLE `test_kxz2` (
`cusno` varchar(10) NOT NULL,
`name2` varchar(10) DEFAULT NULL,
`address` varchar(10) DEFAULT NULL,
PRIMARY KEY (`cusno`)
)
mysql实现oracle的merge函数:把表1的数据更新到表2,如果没有就插入,有并且一样就不操作,有但是不一样更新成表1的数据;
mysql中,首先这这两个表必须有主键(cusnoo),并且有外键关联(test_kxz1.cusno=test_kxz2.cusno)
on DUPLICATE key update 语法
insert into test_kxz2
(cusno, name2, address)
select t.cusno, t.name name2, t.address/*这里的字段名必须和insert的小括号里的一样,不一样就起别名*/
from test_kxz1 t
on DUPLICATE key update
cusno = VALUES(cusno),name2 = VALUES(name2), address = VALUES(address)
oracle中的语法:
MERGE into test_kxz2 t2 using test_kxz1 t1 on (t1.cusno=t2.cusno)
when matched THEN update set t1.name = t2.name
when not matched then insert into values(t1.cusno,t1.name)
上一篇: PHP正则表达式需要转义的字符小结