2017-07-29 40 views
0

我有這樣的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。

回答

1
"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

謝謝,我會試試這個,並更新正確的答案,如果它工作正常。 –

相關問題