使用最大计数返回行而不使用子查询

时间:2016-02-14 15:18:06

标签: sql h2

你有两个关系 派对(身份证,姓名)代表(身份证,参与方) 如果id是主键,则Delegate中的属性方是外键,定义如下:

  

party int references Party

=>这是一个C-CM关系。 [C:代表 C 有一个党,CM:党 C M 多名代表]

现在你怎么能用SQL来证明拥有最多代表的派对? [不使用子查询或黑客像订购然后切割]

我只为一个实体找到了以下解决方案:http://www.xaprb.com/blog/2007/03/14/how-to-find-the-max-row-per-group-in-sql-without-subqueries/

我的方法就像

select p.name 
from Party p inner join Delegate d 
on p.id = d.party 
group by p.name 
having count(d.id) = MAXVALUE

MAXVALUE是我不知道的东西

1 个答案:

答案 0 :(得分:0)

我建议您使用限制

select p.name,count(*) num
from Party p, Delegate d 
where p.id = d.party 
group by p.name 
order by num
limit 1; 

或临时表选择

 select p.name, max(tot) 
 from ( p.name, count(* ) as tot 
     from Party p, Delegate d 
     where p.id = d.party 
     group by p.name ) as t;