描述: 我们现在来求在每个产品下面的最近的日期
    image.png

    如果我们按照平时的理解:

    1. select
    2. product_id,order_date
    3. from
    4. Orders
    5. group by
    6. product_id
    7. order by
    8. order_date desc

    但是我们会发现会输出下面的值,不是我们想要的。

    1. {"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) 聚合函数+子查询

    1. select
    2. product_id,
    3. max(order_date)
    4. from
    5. Orders
    6. group by
    7. product_id

    如果想要这个整行的数据只需要再来一个in子查询即可。
    (2) 先排序后分组

    1. select
    2. t1.*
    3. from
    4. (
    5. select
    6. order_id ,
    7. order_date ,
    8. customer_id ,
    9. product_id
    10. from
    11. Orders
    12. order by
    13. order_date
    14. desc
    15. limit 10000000000
    16. ) t1
    17. group by t1.product_id