为什么这不能用于mysql?
SELECT true AS is_valid FROM users WHERE is_valid
我需要以这种方式编写它,因为我使用了一个生成查询的框架。
但是我得到了
Unknown column 'is_valid' in 'where clause'
答案 0 :(得分:1)
您不能在where
子句中使用别名,因为查询是从右到左解析的。因此,一旦从右边开始导致未知列错误,该列的别名就不可知。
来自MySql docs:
"可以使用AS alias_name为select_expr提供别名。别名是 用作表达式的列名,可以在GROUP BY中使用, ORDER BY或HAVING子句。"
答案 1 :(得分:0)
由于SELECT
查询语义,您不能在WHERE
子句中使用SELECT
表达式的别名:首先它是表JOIN
(此处不适用) ),然后它使用WHERE
子句中的条件过滤行,之后它计算SELECT
子句中的表达式,并且可选地,它为其中一些子句创建别名。 GROUP BY
+ HAVING
的处理如下(如果存在),然后根据ORDER BY
子句对结果行进行排序,最后使用LIMIT
值(如果存在)仅向请求的客户端发送请求的行。