作者TeemingVoid (TeemingVoid)
看板Database
标题Re: [SQL ] mysql ON DUPLICATE KEY UPDATE
时间Thu Jul 26 23:05:44 2012
※ 引述《piglon (TEST123)》之铭言:
: 想请教 ON DUPLICATE KEY UPDATE 用法的问题
: 我有一个临时表内的资料要写入资料表
: 希望可以达到存在就更新不存在就新增
: 但我看不懂 范例的内容
: INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
: [INTO] tbl_name [(col_name,...)]
: SELECT ...
: [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
: 我写的语法一直出错
: insert into table (a,b,c,d)
: select a,b,c,d from tmp_table
: ON DUPLICATE KEY UPDATE
: 不知道我哪边有问题呢?
请改成这样:
insert into table (a,b,c,d)
select a,b,c,d from tmp_table t
ON DUPLICATE KEY UPDATE a=t.a, b=t.b, c=t.c, d=t.d
1. 针对来源资料表给个别名
2. 新增...当键值重复时,修改 a = 别名.a, ....
更详细的例子:
use test;
create table lab (id int primary key, data1 int, data2 int);
insert into lab values (3, 30, 300);
-- 单笔的写法
insert into lab values (3, 33, 333)
on duplicate key update data1 = 32, data2 = 302;
create table labTemp (id int primary key, data1 int, data2 int);
insert into labTemp values (1, 11, 101);
insert into labTemp values (2, 21, 202);
insert into labTemp values (3, 31, 303);
-- 整批汇入的写法
insert into lab
select id, data1, data2 from labTemp t
on duplicate key update data1 = t.data1, data2 = t.data2;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.41.100.183
1F:推 piglon:感谢你! 可以过了!! 谢谢!谢谢! 07/27 13:02