重复密钥更新增值

tes*_*est 2 mysql sql syntax upsert sql-insert

我有一个带有架构的表:

storeId varchar(255),
ttl int,
date varchar(255),
bytes bigint(255),
UNIQUE KEY storeId_date_index (storeId, date)
Run Code Online (Sandbox Code Playgroud)

我想插入一行(如果不存在),否则更新它。

对于我点击的每个重复键,我想将旧值与新值相加。这个命令怎么可能呢ON DUPLICATE KEY UPDATE

这是我到目前为止所拥有的:

insert into table (storeId, date, ttl, bytes) 
values 
('477866', '2019-02-05', 54543543, 100),
('6301', '2019-02-05', 54543543, 999999),
('12345', '2019-02-05', 54543543, 999999)
ON DUPLICATE KEY UPDATE
bytes = oldval + newval # sum old value with new value where storeId and date match in the values
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 6

引用文档

在子句的赋值表达式中ON DUPLICATE KEY UPDATE,您可以使用VALUES(col_name)函数来引用语句INSERT部分中的列值INSERT ... ON DUPLICATE KEY UPDATE

IE:

INSERT INTO mhytable(storeId, date, ttl, bytes) 
VALUES 
('477866', '2019-02-05', 54543543, 100),
('6301', '2019-02-05', 54543543, 999999),
('12345', '2019-02-05', 54543543, 999999)
ON DUPLICATE KEY UPDATE
bytes = bytes + VALUES(bytes)
Run Code Online (Sandbox Code Playgroud)