在新的项目中遇到了这种情况,按键值查库表中数据,有则更新,无则插入的需求,以前在db2中,写过类似的sql,使用的是merge,mysql 类似的功能是:ON DUPLICATE KEY UPDATE。
如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。
举例:
INSERT INTO customer_account (customer_id,his_repay_amount)
SELECT l.customer_id,l.ready_pay AS his_repay_amount FROM
(SELECT r.loan_account FROM repay_info r WHERE r.input_date='') r1
LEFT JOIN lending_info l ON l.loan_account = r1.loan_account
ON DUPLICATE KEY UPDATE
customer_account.his_repay_amount=VALUES(his_repay_amount)