2010-02-28 14 views
6

Tengo una consulta MySQL, donde me gustaría tener un pseudo columna regresó el que se basa apagado de:MySQL: valor en función de las condiciones

  • Si columnW no es igual a 0, debe ser 1, pero
  • Si Columnx no es igual a 0, debe ser 2, pero
  • Si columnY no es igual a 0, debe ser 3, pero
  • Si columnZ no es igual a 0, que debería ser 4

Espero que tenga sentido. Mi SQL no es lo suficientemente bueno para entender esto.

Respuesta

9

intentar usar un case expression:

SELECT CASE WHEN columnZ <> 0 THEN 4 
      WHEN columnY <> 0 THEN 3 
      WHEN columnX <> 0 THEN 2 
      WHEN columnW <> 0 THEN 1 
      ELSE 0 
     END AS your_alias_name 
FROM ... 
+0

bien, tengo que saber. Gracias por la ayuda con la sintaxis. –

+0

¿Existe una función en la que pueda poner el valor seleccionado en una lista y usar el valor de una columna como subíndice para seleccionar de esa lista, p. SELECCIONE xxxx (fruit-index-field-name, 'apple', 'orange', 'papaya' ...) como FruitName, ... –

1

Puede usar CASE ... WHEN para hacer esto.

Ver

mysql> SELECT CASE 1 WHEN 1 THEN 'one' 
    ->  WHEN 2 THEN 'two' ELSE 'more' END; 
     -> 'one' 
mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END; 
     -> 'true' 
mysql> SELECT CASE BINARY 'B' 
    ->  WHEN 'a' THEN 1 WHEN 'b' THEN 2 END; 
     -> NULL 
Cuestiones relacionadas