ポイントを追加したりポイントを差し引く変数があります。
私のスコア表はありますが、スコアの値は常に0から20の間でなければなりません。
スコアが現在2で、変数$ valueが-3なら、この。更新された値は2つの値の間にとどまる必要があります
UPDATE table
SET field = GREATEST(0, field + $value)
WHERE id = $id
値が0より大きく20より大きくならないように方法がありますか?
ポイントを追加したりポイントを差し引く変数があります。
私のスコア表はありますが、スコアの値は常に0から20の間でなければなりません。
スコアが現在2で、変数$ valueが-3なら、この。更新された値は2つの値の間にとどまる必要があります
UPDATE table
SET field = GREATEST(0, field + $value)
WHERE id = $id
値が0より大きく20より大きくならないように方法がありますか?
ケース式を使用できます。
UPDATE [table]
SET [field] = CASE
WHEN [field] + @value > 20
THEN 20
WHEN [field] + @value < 0
THEN 0
ELSE [field] + @value
END
WHERE [id] = @ID;
正当なのですね、ありがとう! –
喜んで助けてください!あなたに適した[回答を受け入れる](https://stackoverflow.com/help/accepted-answer)を覚えておいてください。 –
このようにGREATESTとLEASTを入れ子にして、あなたが望むものを達成することができます。
UPDATE table
SET field = GREATEST(0, LEAST(20, field + $value))
WHERE id = $id
'設定フィールド=ケースフィールド+値<そして0時にフィールド+値>その後、20 20他のフィールド+値 – xQbert
はあなたがデータベース層あなたにあなたのビジネスロジックを入れてもよろしいですend'?そのコードを上記の層にすることは、後で変更する方がはるかに簡単です。 –