2012-09-22 99 views
4

假设我有一个名为Domain的MySQL表。如何从该表中找到最受欢迎的电子邮件域名。直接我想查找最大数量的所有行。选择多个最大行

Domain  
gmail.com  
gmail.com  
gmail.com  
yahoo.com  
yahoo.com  
yahoo.com  
rediffmail.com  
rediffmail.com 
mail.com 

我想要的输出:

Domain  No_of_users 
gmail.com 3 
yahoo.com 3 
+1

是最常用的记录。所以gmail和雅虎都是3次,但不是rediffmail,因为它用了不到3次。 – GolezTrol

+0

我不想使用限制。 – Alonso

+0

@ user1690831,我添加了一些更多的示例数据,以阻止正在发生的混淆... – Ben

回答

2
select 
    x.Domain, 
    x.No_of_users 
from 
    (select 
    d.Domain, 
    count(d.Domain) as No_of_users 
    from 
    Domain d 
    group by 
    d.Domain) x 
where 
    x.No_of_users = 
    (select 
     max(x2.No_of_users) 
    from 
     (select 
     d2.Domain, 
     count(d2.Domain) as No_of_users 
     from 
     Domain d2 
     group by 
     d2.Domain) x2) 
+0

superb.Worked for me..Thanks。谢谢。 – Alonso

+0

太复杂了。 @ Marlin的答案没有太多的子查询。 –

2
SELECT Domain, count(id) 
FROM Domain 
GROUP BY Domain.Domain 
HAVING count(id) = (SELECT count(id) FROM Domain D GROUP BY D.Domain ORDER BY count(id) DESC LIMIT 1)