mysql 中 ON DUPLICATE KEY UPDATE

来源:互联网 发布:施工进度网络计划软件 编辑:程序博客网 时间:2024/05/29 19:32

由于今天要轮询同步两千多个表,当每次要记录记录,时间久了就会表就会庞大,这样也不要维护;于是就想 如果表存在那么每次更新相关字段。但由于第一次使用它我也找了很久的错误。

百度了很多,还是不如 官网来得直接

表中含有多个唯一索引或主键索引
官网是这么说:当表中含有多个唯一索引或主键索引时,使用ON DUPLICATE KEY UPDATE子句更新数据,有一下结论INSERT INTO t1 (a,b,c) VALUES (1,2,3)ON DUPLICATE KEY UPDATE c=c+1; 相同于UPDATE t1 SET c=c+1 WHERE a=1 OR b=2 LIMIT 1; 即就a不满足时,在考虑有没有满足b的值,有就更新。
返回值
如果有新增就返回自增ID,并使用INSERT ... ON DUPLICATE KEY UPDATE 插入或更新数据,LAST_INSERT_ID() 会返回自增ID。
使用详情
ON DUPLICATE KEY UPDATE 子句可能包含更新多列的值,每个值通过 ,隔开。 在子句设置列值时,

  1. 可以直接设置值即INSERT INTO t1 (a,b,c) VALUES (1,2,3)ON DUPLICATE KEY UPDATE c='change'.
  2. 也可以通过values(column_name)获取列值 ,既是:INSERT INTO t1 (a,b,c) VALUES (1,2,3)ON DUPLICATE KEY UPDATE c=values(c)column_name就是取得中 NSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6) 的值

下面是我今天修改的正确的代码:

INSERT  into Temp_Pollpayment_20171201 (bank_time,order_id,order_table) values ('{$result_datum['charge_time']}','{$result_datum['charge_id']}','{$item}') ON DUPLICATE KEY UPDATE  bank_time=values(bank_time),order_id=values(order_id)
原创粉丝点击