2010-02-28 15 views
6

Ho una query MySQL dove desidero per avere una colonna pseudo restituito che è basato fuori:MySQL: valore basato su condizioni

  • Se columnW è diverso da 0, dovrebbe essere 1 MA
  • Se Columnx è diverso da 0, dovrebbe essere 2 mA
  • Se colonnaY è diverso da 0, dovrebbe essere 3 mA
  • Se columnZ è diverso da 0, dovrebbe essere 4

Speriamo che abbia senso. Il mio SQL non è abbastanza buono da avvolgere la mia mente su questo.

risposta

9

provare a utilizzare 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

Va bene, l'ho so. Grazie per l'aiuto con la sintassi. –

+0

Esiste una funzione in cui è possibile inserire il valore selezionato in un elenco e utilizzare il valore di una colonna come indice per selezionare da tale elenco, ad es. SELEZIONA xxxx (nome-campo-indice-frutta, 'mela', 'arancia', 'papaia' ...) come FruitName, ... –

1

È possibile utilizzare CASE ... QUANDO per fare ciò.

Vedi

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