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

时间:2018-07-26 08:27:13

标签: mysql sql group-by

我想用相同的客户名称对行进行分组并显示其他行。我有此表

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 个答案:

答案 0 :(得分:2)

您似乎想先按最大日期对客户进行排序,然后再按日期对客户进行排序。

从MySQL 8.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;

答案 1 :(得分:0)

只需在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