2012-07-25 97 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`