簡體   English   中英

mysql使用MAX(date)獲取最后N條記錄

[英]mysql get last N records with MAX(date)

所以我在product_rate_history表中有以下數據- 在此處輸入圖片說明

我想選擇最后N條記錄(例如7條記錄),以通知給定產品的價格變化歷史。 如果產品費率一天更改一次以上,則查詢應選擇當天的最新費率更改。

因此,在上表中,我希望輸出類似產品ID 16的輸出 -

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

我嘗試了以下查詢,但它僅返回僅具有最后更新率的一行-

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM