MySQL:基于条件的值

时间:2010-02-28 20:17:10

标签: sql mysql conditional

我有一个MySQL查询,我希望它返回一个基于以下的伪列:

  • 如果columnW不等于0,则应为1 BUT
  • 如果columnX不等于0,则应为2 BUT
  • 如果columnY不等于0,则应为3 BUT
  • 如果columnZ不等于0,则应为4

希望这是有道理的。我的SQL还不够好,无法解决这个问题。

2 个答案:

答案 0 :(得分:9)

尝试使用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 ...

答案 1 :(得分:1)

您可以使用CASE ... WHEN来执行此操作。

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