2009-09-09 17 views
10

Al actualizar una fila, quiero tener una verificación incorporada para verificar algunos límites. La mayoría de los idiomas tienen una función MAX() para devolver el máximo de los argumentos aprobados, pero MySQL parece usar MAX() para otra cosa. Por ejemplo:MySQL MAX() función para comparar valores numéricos en una actualización?

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

quiero restar 20 dólares de ID de la persona 1, pero no quiero dólares para ser representados siempre por un valor negativo, por lo que quiero incorporado en comparación con 0. hace esto ¿trabajo? ¿O hay otra manera? ¡Gracias!

Respuesta

35

MySQL admite una función llamada GREATEST(). Devuelve el mayor valor entre una lista de sus argumentos.

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

Ésta no es una función estándar en ANSI SQL, así que no contar con que es disponible en otras marcas de base de datos SQL. Si necesita una solución independiente del proveedor, use la sintaxis CASE sugerida por otros. Pero si todo lo que necesitas usar es MySQL, esta función es más conciso.

+3

La función 'MIN()' correspondiente se llama 'LEAST()' –

Cuestiones relacionadas