32

特定の列で最大の値を持つ上位 N 行を返す必要があるクエリについて、私は本当に混乱しています。

たとえば、行のN-1, N, N + 1値が同じ場合。戻る必要がありますjust top Nか、またtop N + 1は行します。

4

3 に答える 3

43

もしあなたがそうするなら:

select *
from t
order by value desc
limit N

上位 N 行を取得します。

もしあなたがそうするなら:

select *
from t join
     (select min(value) as cutoff
      from (select value
            from t
            order by value
            limit N
           ) tlim
    ) tlim
    on t.value >= tlim;

または、これをもう少し簡単に次のように表現することもできます。

select *
from t join
     (select value
      from t
      order by value
      limit N
    ) tlim
    on t.value = tlim.value;

以下は概念的にやりたいことですが、MySQL では機能しない可能性があります。

select *
from t
where t.value >= ANY (select value from t order by value limit N)
于 2013-11-07T03:23:11.157 に答える