我有一个返回以下值的查询:
TemplateCode Total
1418 35
7419 31
7418 31
8325 17
15623 17
4997 17
我希望所有行都有前3个Total
值
在我的查询中,如果我在查询中包含LIMIT 3
,那么它只提供3个我不想要的内容。我不想包含LIMIT
,因为计数可能会不时变化。
如何在Total
上添加条件并始终获得前3个计数值
我当前的查询如下:
select TemplateCode, count(*) as Total from table group by TemplateCode
order by Total desc
limit 3
答案 0 :(得分:1)
我认为这可以满足您的需求:
select t.*
from t
where t.Total >= (select distinct t2.Total
from t t2
order by t2.Total desc
limit 2, 1
);
这假定您需要第三个 distinct 值。如果您只想要第三个值,请移除distinct
。
答案 1 :(得分:0)
您可以在子查询上使用内部联接来获得前3个
select m.TemplateCode , m.total
from my_table m
inner join (
select Total
from my_table
order by Total Desc
limit 3
) t on t.total = m.total
order by m.total, m.TemplateCode