如何在以下mysql查询的where子句中引用“decider”?

SELECT *,
       CASE
         WHEN (cond1) THEN 1
         WHEN (cond2) THEN 2
       END as decider
  FROM t1,
       t2
 WHERE cond12
   AND decider <> NULL

我试过了,结果出了个1054: Unknown column in where clause错误。

最佳答案

使用:

SELECT *,
       CASE
         WHEN (cond1) THEN 1
         WHEN (cond2) THEN 2
         ELSE NULL
       END as decider
  FROM t1,
       t2
 WHERE cond12
HAVING decider IS NOT NULL

最早的MySQL允许您使用列别名是GROUP BY子句
您需要使用IS NULLIS NOT NULL(如果合适的话),因为NULL不是一个值——它是缺少任何值的占位符,这需要在SQL中进行特殊处理

关于mysql - 如何从以下mysql查询的where子句中引用'decider'?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6209383/

10-12 02:01