mysql - 如何为mysql中的每个用户获取计数值最高的行

标签 mysql sql

我有一个表,通过查询我得到了这个结果。我正在尝试获取计数最高的每个用户的名称。

select  n.user_id,t.name,count(t.name) ct from
      temp_user_batches n inner join tags t on n.id=t.note_id
      where user_id IN (9122,9125,9126,9127) 
      group by n.user_id,t.name order by 1,3 desc

这个查询给了我这个表的结果

   USERID   NAME                 COUNT
    9122    AWESOME               4
    9122    BritishLanguage       3
    9122    Feeling               3
    9122    fantastic             2
    9122    blessed               1
    9125    BritishLanguage       4
    9125    London                3
    9125    fantastic             3
    9125    EnglishUK             3
    9125    calmos                2
    9125    AWESOME               2
    9125    amazing               2
    9126    AWESOME               7
    9126    Feeling               3
    9126    Gary                  2
    9126    safe                  1
    9126    blessed               1
    9126    EnglishUK             1
    9127    Carl                  3
    9127    karen                 3
    9127    kelly                 2

我想要得到的结果:

   USERID   NAME                 COUNT
    9122    AWESOME               4
    9125    BritishLanguage       4
    9126    Awesome               7
    9127    Carl                  3

最佳答案

我更改了几个表和列标识符 - 为了帮助理解...

SELECT x.*
  FROM 
     ( SELECT n.user_id
            , t.name
            , COUNT(t.name) ct 
         FROM notes n 
         JOIN tags t 
           ON n.note_id = t.note_id
        WHERE user_id IN (9122,9125,9126,9127)
        GROUP 
           BY n.user_id
            , t.name
     ) x
  JOIN 
     ( SELECT user_id
            , MAX(ct) ct
         FROM 
            ( SELECT n.user_id
                   , t.name
                   , COUNT(t.name) ct 
                FROM notes n 
                JOIN tags t 
                  ON n.note_id = t.note_id
               WHERE user_id IN (9122,9125,9126,9127)
               GROUP 
                  BY n.user_id
                   , t.name
            ) a
        GROUP
           BY user_id
     ) y
    ON y.user_id = x.user_id
   AND y.ct = x.ct;

关于mysql - 如何为mysql中的每个用户获取计数值最高的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38153870/

相关文章:

php - SQL查询中MySQL字段值到时间的关系

php - 将android应用程序链接到mysql数据库手机并链接信息

将参数传递给查询时,Php PDO 无法正常工作?

php - Sql 在 codeigniter 中将 AND 与 OR 组合

java - 外键空指针

c# - 多列分组

c# - 如何使 Entity Framework 6 (DB First) 显式插入 Guid/UniqueIdentifier 主键?

mysql - 插入联合所有,子查询

JOIN 子句上的 SQL 排序规则问题——运行时极其缓慢

java - 如何修复使用 Mahout 在 SetFetchSize() 上失败的建议