从表中选择具有最大值的行

时间:2016-01-13 07:58:05

标签: mysql sql database select top-n

我有一个非唯一列auth_id的表。我需要选择具有最大条目数的auth_id值。



SimpleModule mod = new SimpleModule("MyModule");
      ObjectMapper mapper = new ObjectMapper();

      mod.addDeserializer(Task.class,
          new CustomDeserializer(Task.class));
      mapper.registerModule(mod);

以下是数据示例:

SimpleModule mod = new SimpleModule("MyModule");
      ObjectMapper mapper = new ObjectMapper();

      mod.addDeserializer(Task.class,
          new CustomDeserializer(Task.class));
      mapper.registerModule(mod);

输出:

但SQL没有看到别名表articles_num。 如何使用此别名创建此WHERE子句?

4 个答案:

答案 0 :(得分:2)

使用limit子句会简单得多 - 您只需根据某个字段订购查询,然后只取第一行:

SELECT   auth_id, COUNT(auth_id) AS cnt 
FROM     articles_authors 
GROUP BY auth_id
ORDER BY 2 DESC
LIMIT    1

答案 1 :(得分:1)

在内部查询中按降序排序数据,然后只取第一个:

SELECT auth_id, cnt
FROM (
    SELECT auth_id, COUNT(auth_id) AS cnt 
    FROM articles_authors 
    GROUP BY auth_id 
    ORDER BY cnt DESC
     )
LIMIT 1

答案 2 :(得分:1)

如果我理解正确,你实际上想得到一行最大值:

SELECT auth_id, count(auth_id) as cnt
FROM articles_authors
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1

如果多个auth_id具有相同的最大计数,我们需要更新此SQL

答案 3 :(得分:0)

试试这个.......

select auth_id, count(auth_id) as cnt 
from articles_authors 
group by auth_id 
order by cnt DESC 
limit 1;

如果它解决了您的问题,请告诉我