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 に答える