添加值在重复键更新

问题描述 投票:1回答:1

我有一个架构的表:

storeId varchar(255),
ttl int,
date varchar(255),
bytes bigint(255),
UNIQUE KEY storeId_date_index (storeId, date)

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

对于每一个重复键我打,我要总结旧值与新值。这怎么可能与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
mysql sql syntax sql-insert upsert
1个回答
2
投票

引述[文档(https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html):

ON DUPLICATE KEY UPDATE子句中分配值表达式,可以使用VALUES(col_name)函数从INSERT语句的INSERT ... ON DUPLICATE KEY UPDATE部分指的列值。

即:

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)
© www.soinside.com 2019 - 2024. All rights reserved.