如何减少表中列的值但不允许它低于零?

问题描述:

我有这样的SQL,通过1如何减少表中列的值但不允许它低于零?

db2.Execute("UPDATE Score " + 

"SET EnglishCorrect = CASE WHEN EnglishCorrect > 0 THEN (EnglishCorrect -1) ELSE 0 END, " + 
"KanaCorrect = CASE WHEN KanaCorrect > 0 THEN (KanaCorrect -1) ELSE 0 END, " + 
"RomajiCorrect = CASE WHEN RomajiCorrect > 0 THEN (RomajiCorrect -1) ELSE 0 END, " + 
"KanjiCorrect = CASE WHEN KanjiCorrect > 0 THEN (KanjiCorrect -1) ELSE 0 END"); 

降低分数我现在想改变这种做法,该分数是由可变数量的减少。该号码将存储在名为pts的C#整数中。

所以我会改变-1"- " + pts + ")"

但是我有一个问题,因为EnglishCorrect,KanaCorrect,RomajiCorrect和KanjiCorrect的值不能小于零。

有人可以建议我如何使它可以减少到零,而不会减少。

因此,举例来说,如果EnglishCorrect为5分6后来我想EnglishCorrect更改为0。

"SET EnglishCorrect = CASE WHEN (EnglishCorrect -pts)>= 0 THEN (EnglishCorrect -pts) ELSE 0 END, " + 
    "KanaCorrect = CASE WHEN KanaCorrect -pts >= 0 THEN (KanaCorrect -pts) ELSE 0 END, " + 
    "RomajiCorrect = CASE WHEN RomajiCorrect-pts >= 0 THEN (RomajiCorrect -pts) ELSE 0 END, " + 
    "KanjiCorrect = CASE WHEN KanjiCorrect-pts >= 0 THEN (KanjiCorrect -pts) ELSE 0 END"); 

希望这有助于。

+0

谢谢,我会试试这个,并更新正确的答案,如果它工作正常。 –