如何减少表中列的值但不允许它低于零?
问题描述:
我有这样的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");
希望这有助于。
谢谢,我会试试这个,并更新正确的答案,如果它工作正常。 –