我有一张包含姓名和订单日期的表格。我试图提出一个查询,以显示每个名称的最后一次以相反的顺序排序。因此,每个订单都是最新订单,但按最早订购的名称排序。
所以这个数据
Tom,10/01/2013
Bob,09/24/2013
Tom,11/03/2013
Tom,10/24/2013
Bill,11/01/2013
Bob,10/22/2013
我想要这个
Bob,10/22/2013
Bill,11/01/2013
Tom,11/03/2013
我试过SELECT * from orders group by name order by -odate
无论是随机的还是比最新的日期更老的
然后我尝试了SELECT * from orders order by -odate group by name
认为它会先排序,但它什么都没有返回
由于 编
答案 0 :(得分:1)
SELECT name, MAX(odate) odate FROM orders GROUP BY name ORDER BY odate
答案 1 :(得分:0)
尝试将MAX
功能用于日期列
SELECT name, MAX(odate) from orders group by name order by odate
答案 2 :(得分:0)
这里的关键是GROUP BY名称,但要选择所需的最大值。
分组时,您可以在其他字段上执行范围功能。
使用ORDER BY DESC放置最新的第一个。
SELECT name, MAX(odate) AS odate FROM orders GROUP BY name ORDER BY odate DESC
请参阅SQL Fiddle