MySQL案例错误在哪里

时间:2015-12-20 16:46:23

标签: mysql case

有没有人知道这个MySQL case语句

有什么问题
    SELECT 
        CASE 
            forsale IS NOT NULL
            THEN 1
            ELSE 2
        END AS is_forsale
 FROM xcart_products 
        where  is_forsale=1 

如果我拿出where它可行。我尝试将where替换为having,但没有雪茄。

1 个答案:

答案 0 :(得分:1)

你至少有三个问题。首先是闭幕式(可能只是一个错字)。其次是缺乏WHEN。第三是在where子句中使用别名,这在SQL中是不允许的。 MySQL有一个扩展,您可以在having子句中使用别名,因此您可以将此逻辑编写为:

SELECT  (CASE WHEN forsale IS NOT NULL
              THEN 1
              ELSE 2
         END) AS is_forsale
FROM xcart_products 
HAVING is_forsale = 1 ;

但是,我认为写起来更简单:

SELECT 1 as is_forsale
FROM xcart_products
WHERE forsale IS NOT NULL;