特定の列で最大の値を持つ上位 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)