2015-05-07 41 views
0

我有一个查询,获取由三个字段分组的内部选择的最大数量。现在我不仅想要数字,而且要整行。我无法弄清楚。下面是返回数字查询:如何获得内部选择最大(计数(*))的行

SELECT MAX (count) FROM 
(SELECT COUNT (*) AS count, 
     field1, 
     field2, 
     field3 
    FROM someScheme.someTable 
    GROUP BY field1, field2, field3 
    ) AS counts 

回答

3

使用order bylimit

SELECT COUNT(*) AS count, field1, field2, field3 
FROM someScheme.someTable 
GROUP BY field1, field2, field3 
ORDER BY COUNT(*) DESC 
LIMIT 1; 

注:这仅返回最大的一个例子。

如果你想要所有可能的行,那么它是更为复杂:

SELECT COUNT(*) AS count, field1, field2, field3 
FROM someScheme.someTable 
GROUP BY field1, field2, field3 
HAVING COUNT(*) = (SELECT MAX(cnt) 
        FROM (SELECT COUNT(*) AS cnt 
         FROM someScheme.someTable 
         GROUP BY field1, field2, field3 
         ) t 
       );