2010-02-28 14 views
6

mam zapytanie MySQL gdzie I jak to mieć kolumnę pseudo zwróconej który opiera się na:MySQL: wartość w oparciu o warunki

  • Jeśli columnW nie równa się 0, należy 1, ale
  • Jeśli columnX nie równa się 0, należy mieć 2, ale
  • Jeśli columnY nie równa się 0, należy się 3, ale
  • Jeśli columnZ nie jest równa 0, to powinno być 4

Mam nadzieję, że ma to sens. Mój SQL nie jest wystarczająco dobry, aby o tym myśleć.

Odpowiedz

9

Spróbuj za pomocą 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

Dobra, muszę to wiedzieć. Dzięki za pomoc w składni. –

+0

Czy istnieje funkcja, dzięki której można umieścić wybraną wartość na liście i użyć wartości kolumny jako indeksu dolnego do wybrania tej listy, np. SELECT xxxx (nazwa-indeksu-owocu-drzewa, "jabłko", "pomarańcza", "papaja" ...) jako nazwa owocowa, ... –

1

Możesz użyć CASE ... WHEN, aby to zrobić.

Zobacz

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 
Powiązane problemy