1. ホーム
  2. mysql

[解決済み] MySQLの 上位n個の最大値を選択しますか?

2022-03-08 06:02:42

質問

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

例えば、行が N-1, N, N + 1 は同じ値を持っています。を返さなければなりません。 just top N または top N + 1 の行になります。

解決方法は?

もし、そうなら。

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)