0

我尝试做这样的事情:

Select column_name*other_column_name as sqr 
From table 
Where sqr<25 
Order by(sqr)

column_name 和 column_name 是我存储 int 值的数据库的列。

我发现

标准 SQL 不允许您在 WHERE 子句中引用列别名。施加此限制是因为在执行 WHERE 代码时,可能尚未确定列值。例如,以下查询是非法的。

有没有人知道如何礼貌地打通,请不要这样说:

Select column_name*other_column_name as sqr 
From table 
Where column_name*other_column_name<25 
Order by (column_name*other_column_name); 

因为在这个例子中我简化了方程,但在我的项目中方程真的很长

谢谢对不起我的英语

4

2 回答 2

5

您可以将查询包装在子查询中,然后可以使用别名:

SELECT *
FROM
(
    Select column_name*other_column_name as sqr
    from table 
) X
where x.sqr < 25 
order by x.sqr;
于 2012-07-25T17:10:18.400 回答
1

这行得通吗?

SELECT (n1 * n2) as `sqr` FROM temptable HAVING `sqr` < 25 ORDER BY `sqr`
于 2012-07-25T17:33:42.287 回答