2017-01-13 2 views
0

私は、クエリを持っていると私は

select * 
from (query which i wrote) as x 
where 
(select count(*) 
    from x as y 
    where x.location=y.location 
    and x.count>=y.count)<=3; 

ではなく、xの

エラー

を与えていたように操作を実行したい、私は、クエリを追加することができますどこにテーブルとして選択出力を参照され私が書いた。クエリはかなり大きいです。上記のクエリを試したときに、テーブルに存在しないエラーが発生しています。上記の操作を実行する方法はありますか?親切に私を助けてください。

+0

'x.count'?したがって、あなたのクエリには 'count'という結果カラムが含まれていますか? –

+0

はいThorsten、私のクエリは3つのテーブルを結合して形成されます。それは場所とカウントを返します。具体的には、場所(都市名)とそれぞれのカウントを返します。私は各都市の上位3つのカウントを取得しようとしています – Arya

答えて

0

このようなテーブルエイリアスは再利用できません。代わりに、サブクエリをコピーする必要があります。または、変数を使用してください:

select q.* 
from (select q.*, 
      (@rn := if(@l = location, @rn + 1, 
         if(@l := location, 1, 1) 
         ) 
      ) as rn 
     from (query which i wrote) q cross join 
      (select @l := '' , @rn := 0) params 
     order by location, count desc 
    ) q 
where rn <= 3; 
+0

ゴードンリノフありがとう、私はあなたのソリューションを試してみました、それはエラーを投げたエラーコード:1051.不明なテーブル 'q' – Arya