mysql insert into select ON DUPLICATE KEY UPDATE 更新值的问题

  • Post author:
  • Post category:mysql


我有一句话

要达到

INSERT INTO table1 (count)

select count(b.c1) count

from table2 b

where date(b.date) =…

group by b.page_hash

ON DUPLICATE KEY UPDATE count=count+b.count

ON DUPLICATE KEY UPDATE count=count+

values(count)

等号后第一个count是表里已经存在的,

values(count)是打算插入的的

今天在写一个mysql 批量更新语句时遇到一个问题

在一个统计表中,有许多统计数据,数据来源于多个数据库和表,很多数据需要使用批量更新方法,(不可能查出所有数据然后一条一条去更新吧),因此需要使用 insert into table select xx from table2这样的语句。

同时,由于需要多次更新table,table定义了一个unique key,因此如果第二次运行或者更新第二批数据的时候,会产生

Error Code : 1062

Duplicate entry ‘xx-yy’key for ‘keyname’ 错误

自然,我们会想到用 on duplicate key 来解除约束,这个时候就需要用到 values 取值函数

values 取值函数:VALUES(

col_name

) 可以引用被插入的

col_name

的 值,注意这个函数只在 insert … update 语句中有意义

sql例子:

insert into table (a, b, c)

select a, b, c from table2

on duplicate key update c =


values(c)


;


注意 values(c)中的c不需要加任何修饰


table 表 设有 a,b 联合unique key



版权声明:本文为iteye_11997原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。