0

と呼ばれるストアド関数と、列をadjust_status持つテーブルがあります。usersstatus

select
  adjust_status(status) as adjusted_status
from users
  where adjusted_status > 0;

adjusted_status存在しないとのことです。なんで?どうすればこれを修正できますか?

4

1 に答える 1

4

エイリアスが定義されているのと同じレベルでエイリアスを参照することはできません。派生テーブルを使用する必要があります。

select *
from (
  select adjust_status(status) as adjusted_status
  from users
) t
where adjusted_status > 0;

これはもちろん拡張できます。

select *
from (
  select adjust_status(u.status) as adjusted_status, 
         u.some_other_column, 
         f.yet_another_column
  from users u
     join foo f on f.some_id = u.some_other_id
) t
where adjusted_status > 0;
于 2013-10-12T18:58:05.500 に答える