我对需要返回特定列上具有最大值的前 N 行的查询感到非常困惑。
例如,如果行N-1, N, N + 1
具有相同的值。我必须返回吗just top N
or top N + 1
rows.
如果你这样做:
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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)