2010-02-28 90 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