V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Nixus
V2EX  ›  问与答

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

  •  
  •   Nixus · Jun 16, 2016 · 3770 views
    This topic created in 3608 days ago, the information mentioned may be changed or developed.

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

    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 ,同时,满足,存在就更新,不存在就插入的条件?

    6 replies    2016-06-17 00:14:24 +08:00
    zeraba
        1
    zeraba  
       Jun 16, 2016 via Android
    sql 说这让业务层领导想好 我只是个打工的 领导让我做啥我就做啥 可本分了
    9hills
        2
    9hills  
       Jun 16, 2016 via iPhone
    说实话,没看懂
    b821025551b
        3
    b821025551b  
       Jun 16, 2016
    如果是 mysql ,可以用 REPLACE
    ETiV
        4
    ETiV  
       Jun 16, 2016   ❤️ 1
    有意思~

    前面都一样,后面: ON DUPLICATE KEY UPDATE num=VALUES(num) + `num`;
    popok
        5
    popok  
       Jun 16, 2016
    id 为 2 的, num 增加了 7 。。。。
    我看楼上的应该对了
    icegreen
        6
    icegreen  
       Jun 17, 2016
    看了两遍题目, 四楼对了;
    为自己的理解能力捉急
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2368 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 11:09 · PVG 19:09 · LAX 04:09 · JFK 07:09
    ♥ Do have faith in what you're doing.