分享
为什么问答平台  ›  专栏  ›  技术社区  ›  TheEHCSMasterE TheEHCSMasterED

获取每个用户最长昵称的SQL查询 - SQL Query to get the longest nickname for each user

  •  -5
  • TheEHCSMasterE TheEHCSMasterED  · 技术社区  · 1 周前

    我有以下简单的表格:

    User Id    |    Nickname
    
    1          |     abcdef
    1          |     abdc
    1          |     a
    
    2          |     x
    2          |     xyz
    2          |     zyztx
    

    一个用户可以有多个昵称。我想编写一个查询,它为每个用户返回最长的昵称。我的查询应返回以下内容:

    User Id    |    Nickname
    
    1          |     abcdef
    
    2          |     zyztx
    

    如何编写这样的查询?

    1 回复  |  直到 1 周前
        1
  •  0
  •   P.Salmon    1 周前

    我个人认为这是微不足道的(但这是您的经验),可以通过使用相关的子查询来找到用户ID的最大长度,并在Where条件下使用它来实现。

    drop table if exists t;
    create table t
    (UserId  int  ,  Nickname varchar(20));
    insert into t values
    (1                   ,     'abcdef'), 
    (1                   ,     'abdc' ),
    (1                   ,     'a'),
    (2                   ,     'x' ),
    (2                   ,     'xyz'), 
    (2                   ,     'zyztx');
    
    select userid,nickname
    from t
    where length(nickname) = (select max(length(nickname)) from t t1 where t1.userid = t.userid);
    
    +--------+----------+
    | userid | nickname |
    +--------+----------+
    |      1 | abcdef   |
    |      2 | zyztx    |
    +--------+----------+
    2 rows in set (0.00 sec)