MySQL: значение основано на условиях - PullRequest
6 голосов
/ 28 февраля 2010

У меня есть запрос MySQL, где я хотел бы получить псевдостолбец, который основан на:

  • Если columnW не равно 0, оно должно быть 1 НО
  • Если columnX не равно 0, оно должно быть 2 НО
  • Если столбец Y не равен 0, он должен быть равен 3 НО
  • Если столбец Z не равен 0, он должен быть 4

Надеюсь, это имеет смысл. Мой SQL недостаточно хорош, чтобы обдумать это.

Ответы [ 2 ]

9 голосов
/ 28 февраля 2010

Попробуйте использовать case case :

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 ...
1 голос
/ 28 февраля 2010

Вы можете использовать CASE ... КОГДА для этого.

См.

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
...