2016-12-27 39 views
-1

如何獲取此查詢中返回的前2行?如何使用max條件得到最上面兩行?

select nomeClube 'Clube', count(Contrato_id_clube) 'NContratos' 
from clube, contrato 
where (id_clube= Contrato_id_clube) 
group by nomeClube 
order by count(Contrato_id_clube) desc 

query results

+0

嘗試限制選項 – DCR

+0

請參閱http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a - 非常 - 簡單的SQL查詢 – Strawberry

回答

0

我相信你想所有組具有最大數量和你的例子恰好有兩個這樣的行。

select nomeClube 'Clube', count(Contrato_id_clube) 'NContratos' 
from clube inner join contrato on id_clube = Contrato_id_clube 
group by nomeClube 
having count(Contrato_id_club) = (
    select max(c) 
    from (
     select count(Contrato_id_clube) c 
     from clube inner join contrato on id_clube = Contrato_id_clube 
     group by nomeClube 
    ) t 
) 

內部聯接內部嵌套查詢可能不是必要的,但因爲你沒有指定表之間的關係,我複製了整個查詢那裏。

-1

,你應該把它放在一個內部的選擇,並得到最高記錄:

select * from (
select nomeClube 'Clube', count(Contrato_id_clube) 'NContratos' 
from clube, contrato 
where (id_clube= Contrato_id_clube) 
group by nomeClube 
order by count(Contrato_id_clube) desc) 
limit 2