我想用相同的客户名称对行进行分组并显示其他行。我有此表
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
但是没有用
任何人都可以帮助我。
答案 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