mysql 获取 MAX(date) 的最后 N 条记录

mysql get last N records with MAX(date)

所以我在 product_rate_history table 中有以下数据 -

我想 select 最后 N 条记录(例如 7 条记录)通知给定产品的费率变化历史。如果产品费率一天更改一次以上,则查询应该 select 当天最近的费率更改。

所以从上面 table 我想要如下产品 ID 的输出 16-

+-----------+-------------------------+------------------------+
|  product_id    |    previous_rate   |           date         |
+----------------+--------------------+------------------------|
|      16        |      2400          |   2016-04-30 23:05:35  |
|      16        |      4500          |   2016-04-29 11:02:42  |
+----------------+--------------------+------------------------+

我尝试了以下查询,但它 returns 只有一行只有最后更新率 -

SELECT * FROM `product_rate_history` prh
    INNER JOIN (SELECT max(created_on)  as max FROM `product_rate_history` GROUP BY Date(created_on)) prh2
      ON prh.created_on = prh2.max
    WHERE prh.product_id = 16
    GROUP BY DATE(prh.created_on)
    ORDER BY prh.created_on DESC;

首先,您不需要在外部查询中进行聚合。

其次,您需要在子查询中重复WHERE子句(针对您使用的方法):

SELECT prh.*
FROM product_rate_history prh INNER JOIN
     (SELECT max(created_on) as maxco
      FROM product_rate_history
      WHERE prh.product_id = 16
      GROUP BY Date(created_on)
     ) prh2
     ON prh.created_on = prh2.maxco
WHERE prh.product_id = 16
ORDER BY prh.created_on DESC;