2009-09-09 22 views
10

行を更新するときに、いくつかの境界チェックを行うための組み込みチェックが必要です。ほとんどの言語は、渡された引数の最大値を返すMAX()関数を持っていますが、MySQLはMAX()を他のものに使用しているようです。たとえば:更新の数値を比較するMySQL MAX()関数?

UPDATE person SET dollars = MAX(0, dollars-20) WHERE id=1 

私は人のid 1から20ドルを減算したいが、私はドルが今まで負の値で表すことにしたくないので、私がしたい内蔵の比較は0でこれを行います作業?それとも別の方法がありますか?ありがとう!

答えて

35

MySQLは、GREATEST()という機能をサポートしています。引数のリストの中で最大の値を返します。

UPDATE person SET dollars = GREATEST(0, dollars-20) WHERE id=1 

これはANSI SQLの標準機能ではないため、他のブランドのSQLデータベースでは使用できません。ベンダーに依存しないソリューションが必要な場合は、他社の推奨する構文CASEを使用してください。しかし、あなたが使用する必要があるのがMySQLだけであれば、この関数はより簡潔です。

+3

対応する 'MIN()'関数は 'LEAST()'と呼ばれます。 –

関連する問題