有没有人知道这个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
,但没有雪茄。
答案 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;