描述: 我们现在来求在每个产品下面的最近的日期
如果我们按照平时的理解:
selectproduct_id,order_datefromOrdersgroup byproduct_idorder byorder_date desc
但是我们会发现会输出下面的值,不是我们想要的。
{"headers": ["product_id", "order_date"], "values": [[3, "2020-08-29"], [1, "2020-07-31"], [2, "2020-07-30"]]
这是因为group by 和order by 一起使用时,会先使用group by分组,并取出分组后的第一条数据,所以后面的order by 排序时根据取出来的第一条数据排序的
但是第一条数据不一定是分组里面的最大数据。
那么如何解决呢?
(1) 聚合函数+子查询
selectproduct_id,max(order_date)fromOrdersgroup byproduct_id
如果想要这个整行的数据只需要再来一个in子查询即可。
(2) 先排序后分组
selectt1.*from(selectorder_id ,order_date ,customer_id ,product_idfromOrdersorder byorder_datedesclimit 10000000000) t1group by t1.product_id
