【问题标题】:MYSQL CASE WHEN UPDATE QueryMYSQL CASE WHEN UPDATE 查询
【发布时间】:2012-09-29 10:19:04
【问题描述】:

这是我的桌子。

我需要做的是创建一个 CASE WHEN UPDATE 查询来更新

  • CurrentCredit +1 如果 1-15

  • CurrentCredit +2 如果 16-30

  • CurrentCredit x.10 并在 >=31 时向上取整

【问题讨论】:

标签: mysql sql


【解决方案1】:

看例子

SQL Fiddle DEMO

类似的东西

UPDATE MyTable
SET CurrentCredit = 
CASE 
  WHEN CurrentCredit BETWEEN 1 AND 15
    THEN CurrentCredit + 1
  WHEN CurrentCredit BETWEEN 16 AND 30
    THEN CurrentCredit +2
  WHEN CurrentCredit >= 31
    THEN CurrentCredit * 10
  ELSE CurrentCredit
END

另外,请记住,如果 CurrentCredit 是 FLOAT,而不是 INT,您可能想尝试类似

UPDATE MyTable
SET CurrentCredit = 
CASE 
  WHEN CurrentCredit >= 1 AND CurrentCredit < 16
    THEN CurrentCredit + 1
  WHEN CurrentCredit >= 16 AND CurrentCredit < 31
    THEN CurrentCredit +2
  WHEN CurrentCredit >= 31
    THEN CurrentCredit * 10
  ELSE CurrentCredit
END;

编辑

对于更正后的请求 (>= 31 CurrentCredit + CEILING(CurrentCredit * 0.1)),请查看使用 CEILING

UPDATE MyTable
SET CurrentCredit = 
CASE 
  WHEN CurrentCredit BETWEEN 1 AND 15
    THEN CurrentCredit + 1
  WHEN CurrentCredit BETWEEN 16 AND 30
    THEN CurrentCredit +2
  WHEN CurrentCredit >= 31
    THEN CurrentCredit + CEILING(CurrentCredit * 0.1)
  ELSE CurrentCredit
END;

SQL Fiddle DEMO

【讨论】:

  • @Mahmoud Gamal,我认为您不应该删除您的答案,就 OP 规范而言,它是正确的。只是也许提一下区别。
  • 我在 31+ 学分上犯了一个错误 :-\ 应该将 31+ 学分乘以 10%,然后将这个数字加到它上面,但要四舍五入。关于如何做到这一点的任何解释?
  • 如果不是很好,我明白,您已经非常有帮助,我非常感激。
  • @DylanMcCann 查看更新并使用 CEILING(四舍五入)
猜你喜欢
  • 1970-01-01
  • 2017-05-30
  • 2014-11-29
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
  • 2021-03-15
相关资源
最近更新 更多