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

如何进行此查询:一个字段无论如何更新,另一个字段仅在某些情况下更新?

  •  2
  • lovespring  · 技术社区  · 16 年前

    更新一些表设置一个字段=xxx,另一个字段=(只在条件下更新,例如大然后零然后减一)。

    3 回复  |  直到 16 年前
        1
  •  9
  •   Mark Byers    16 年前

    使用CASE将字段更新为新值,或根据条件的值再次设置相同的值。

    UPDATE some_table
    SET one_field = 'xxx',
        another_field = CASE WHEN another_field > 0
                             THEN another_field - 1
                             ELSE another_field
                        END
    

    对于不允许低于零的数字,可以使用 GREATEST :

    UPDATE some_table
    SET one_field = 'xxx',
        another_field = GREATEST(0, another_field - 1)
    
        2
  •  1
  •   Haim Evgi    16 年前
    update sone_table set one_field=xxx, another_field=IF(another_field > 0, value ,  another_field) 
    
        3
  •  0
  •   Josaph    16 年前

    
    CREATE PROCEDURE UpdateTable(IN VALUE1 INT, IN VALUE2 INT)
    BEGIN 
     IF (VALUE2 > 0) 
      THEN 
        UPDATE SOME_TABLE SET ONE_FIELD=VALUE1, ANOTHER_FIELD=VALUE2;
    ELSE UPDATE SOME_TABLE SET ONE_FIELD=VALUE1; END IF; END|