3

私はこのようなことをしたいと思います:

select 
case when (select count(*) as score from users t1 )   >5   THEN score   else 0 end 

試してみると、エラーが発生します:

column score doesn't exists. 

他の方法でこれを行うことはできますか?LIMIT 値を設定する必要があります。もちろん、私はこのようにしたいと思います:

select 
case when (select count(*) as score from users t1 )   >5   THEN (select count(*) as score from users)    else 0 end 

しかし、この同じクエリを 2 回実行する必要はありません。アイデアはありますか?

4

1 に答える 1

7

WITH次の句を使用できます。

with a as (select count(*) score from t)
select case when score > 5 then score else 0 end from a;

またはサブクエリ (インライン ビュー):

select case when score > 5 then score else 0 end 
from (select count(*) score from t) t;
于 2013-06-23T21:08:41.807 に答える