2010-02-28 89 views
6

我有一个MySQL查询,我想它具有伪柱返回值是基于断:MySQL的:根据条件

  • 如果columnW不等于0,则它应该是1,但
  • 如果columnX不等于0,则它应该是2,但
  • 如果columnY不等于0,则它应该是3 BUT
  • 如果columnZ不等于0,则它应该是4

希望这是有道理的。我的SQL不够好,无法把我的头围绕在这里。

回答

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

好吧,我有知道的。感谢您对语法的帮助。 – 2010-02-28 20:25:21

+0

是否有一个函数可以将选定的值放入列表中,并使用列值作为下标从列表中进行选择,例如: SELECT xxxx(果实索引字段名称,'苹果','橙色','木瓜'...)作为FruitName,... – 2012-12-18 02:22:54

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