这个 SQL 是,如果存在,就更新,不存在就插入新记录。想改成如果存在,就增量更新,不存在就插入新记录

2016-06-16 18:03:01 +08:00
 Nixus

目前是,存在就更新,不存在就插入新记录

INSERT INTO abc(id,num,tm)VALUES(1,7,1),(2,8,1) ON DUPLICATE KEY UPDATE num=VALUES(num)

但是这样,每次执行,就需要把所有的原始数据读一遍

如果做增量更新,应该怎么做呢?

比如:

11:00

id num tm

1 2 06-16

2 1 06-16

12:00

id num tm

1 7 06-16

2 8 06-16

那么, 12 点相对于 11 点的时候, id 为 1 的记录, num 增加了 5 , id 为 2 的, num 增加了 6 。 SQL 怎样写,才能让 id 为 1 的 num 增加 5 , id 为 2 的 num 增加 6 ,同时,满足,存在就更新,不存在就插入的条件?

3409 次点击
所在节点    问与答
6 条回复
zeraba
2016-06-16 18:54:31 +08:00
sql 说这让业务层领导想好 我只是个打工的 领导让我做啥我就做啥 可本分了
9hills
2016-06-16 19:06:06 +08:00
说实话,没看懂
b821025551b
2016-06-16 19:08:12 +08:00
如果是 mysql ,可以用 REPLACE
ETiV
2016-06-16 19:47:22 +08:00
有意思~

前面都一样,后面: ON DUPLICATE KEY UPDATE num=VALUES(num) + `num`;
popok
2016-06-16 21:49:07 +08:00
id 为 2 的, num 增加了 7 。。。。
我看楼上的应该对了
icegreen
2016-06-17 00:14:24 +08:00
看了两遍题目, 四楼对了;
为自己的理解能力捉急

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/286236

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX