代码之家  ›  专栏  ›  技术社区  ›  Sasha

MySQL-用一个查询增加多行的值

  •  0
  • Sasha  · 技术社区  · 6 年前

    是否可以用一个查询更新和增加多行的值?

    我有下表:

    id | name | count | created_at | updated_at
    

    每次用户选择搜索中的某些服务时,我都要更新计数(这是通过GUI完成的,用户可以选择一个或多个服务,我正在获取服务的ID)。

    当选择了多个服务时,我可以对每个服务执行一个查询,但这似乎不是很有效。

    例子:

    我需要一次更新7个服务并增加每个服务的计数值:

    UPDATE services SET count = count + 1 WHERE id = 28
    
    UPDATE services SET count = count + 1 WHERE id = 29
    
    UPDATE services SET count = count + 1 WHERE id = 39
    
    UPDATE services SET count = count + 1 WHERE id = 44
    
    UPDATE services SET count = count + 1 WHERE id = 296
    
    UPDATE services SET count = count + 1 WHERE id = 294
    
    UPDATE services SET count = count + 1 WHERE id = 111
    

    2 回复  |  直到 6 年前
        1
  •  3
  •   Raymond Nijland    6 年前

    我需要一次更新7个服务并增加 他们每个人:

    UPDATE services SET count = count + 1 WHERE id = 28
    
    UPDATE services SET count = count + 1 WHERE id = 29
    
    UPDATE services SET count = count + 1 WHERE id = 39
    
    UPDATE services SET count = count + 1 WHERE id = 44
    
    UPDATE services SET count = count + 1 WHERE id = 296
    
    UPDATE services SET count = count + 1 WHERE id = 294
    
    UPDATE services SET count = count + 1 WHERE id = 111
    

    是否可以在一个查询中执行此更新?

    可以重写为一个查询。

    UPDATE 
     services 
    SET 
     count = count + 1 
    WHERE
     id IN(28, 29, 39, 44, 296, 294, 111)
    
        2
  •  0
  •   Suresh Kamrushi Dimitri Mestdagh    6 年前

    update table set `count` = `count` + 1 
    

    上面的查询将更新所有行。
    如果要更新特定行,可以添加where条件:

    update table set `count` = `count` + 1 where name = 'searchText'