代码之家  ›  专栏  ›  技术社区  ›  Sabra

SQL显示具有相同一列值的分组行

  •  -1
  • Sabra  · 技术社区  · 8 年前

    我想用相同的wolumn客户名称对行进行分组,并显示其他行

    id   ||    name_customer ||   date    
    1          name 1             21/07/2018    
    2          name 2             22/07/2018   
    3          name 3             23/07/2018     
    5          name 1             27/07/2018
    

    所以我想要的结果是: 要先按日期描述排序行,然后按同名客户分组,请执行以下操作:

    id   ||    name_customer ||   date
    5          name 1             27/07/2018
    1          name 1             21/07/2018
    3          name 3             23/07/2018 
    2          name 2             22/07/2018
    

    我试过:

    SELECT * FROM my_table 
    GROUP BY name_customer
    order BY date DESC
    

    但没用

    任何人都可以帮我。

    2 回复  |  直到 8 年前
        1
  •  2
  •   Thorsten Kettner    8 年前

    看来你想先按客户的最大日期对客户进行排序,然后再按日期对客户进行排序。

    从MySQL8.0开始:

    select *
    from my_table
    order by
      max(date) over (partition by name_customer) desc,
      name_customer,
      date desc;
    

    在旧版本中:

    select *
    from my_table
    order by
      (
        select max(date)
        from my_table m
        where m.name_customer = my_table.name_customer
      ) desc,
      name_customer,
      date desc;
    
        2
  •  0
  •   Zaynul Abadin Tuhin    8 年前

    只需在中使用客户名称 order by

        SELECT * FROM my_table     
      order BY name_customer,date desc 
    

    https://www.db-fiddle.com/f/jzh4cEoYXVKfvs6ZmSVhfG/2

    id  name_customer   date
    5   name 1  2018-07-27
    1   name 1  2018-07-21
    2   name 2  2018-07-22
    3   name 3  2018-07-23