1

最小的例子

select a.order_id as X from orders as a
WHERE
X > 8000

查询将失败,因为 X 不是列,有什么解决方案吗?

另一个例子

select (if (E.size > 0, E.Size, (B.height x B.width)) as sizeX from
orders as a, report as E, size as B

where

(E.id = a.id and B.id = a.id)
and
sizeX > 100

我的查询可能包含拼写错误,但我希望我的问题很清楚

4

2 回答 2

3

您有 2 个选项:

1) 使用HAVING(效率不高,因为在返回结果之后应用了有子句的条件,因此不使用索引)

select a.order_id as X from orders as a
HAVING
X > 8000

2)使用列名(如果你有索引和where子句中使用的列)

select a.order_id as X from orders as a
WHERE
a.order_id > 8000
于 2013-06-20T08:51:41.220 回答
2

标准 SQL 不允许在 WHERE 子句中引用列别名,请参阅此处的文档

于 2013-06-20T08:55:21.763 回答