2012-07-25 100 views
0

余米尝试做这样的事情:MYSQL数据库选择问题

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

列名和列名在哪里我存储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); 

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

感谢对不起我的英语

回答

5

你可以只是包装您的查询在子查询中,然后你可以使用别名:

SELECT * 
FROM 
(
    Select column_name*other_column_name as sqr 
    from table 
) X 
where x.sqr < 25 
order by x.sqr; 
+0

这是我以前走的方式。 – 2012-07-25 17:15:16

1

这项工作?

SELECT (n1 * n2) as `sqr` FROM temptable HAVING `sqr` < 25 ORDER BY `sqr`