我有一个表,记录了每个cost_price、unit_price和special_price上商品的所有价格变化。即使其中一项定价与旧定价相比发生变化,该表也会记录数据。表结构示例如下。
id | item_id | cost_price | unit_price | special_price | created_date
---------------------------------------------------------------------------
1 | 101 | 100 | NULL | NULL | 2018-07-15 10:02:20
2 | 102 | NULL | 250 | NULL | 2018-07-16 12:23:00
3 | 101 | NULL | 150 | NULL | 2018-07-16 10:02:20
4 | 101 | NULL | 200 | NULL | 2018-07-18 12:23:00
5 | 101 | NULL | 201 | NULL | 2018-07-22 10:02:20
6 | 102 | NULL | 283 | NULL | 2018-07-28 12:23:00
我想从上表中获取上个月的以下输出(日期为 2018 年 7 月 13 日)
item_id | unit_price | changed_date
-----------------------------------------
101 | 201 | 2018-07-22 10:02:20
101 | 200 | 2018-07-18 12:23:00
102 | 283 | 2018-07-28 12:23:00
我需要上面的输出,其中仅显示unit_price中发生的最后两次更改。
最佳答案
这可能看起来很复杂:
SELECT t1.item_id,t1.unit_price,t1.created_date AS changed_date
FROM table_name t1 INNER JOIN
(
SELECT a.item_id, a.unit_price, MAX(a.created_date) AS changed_date
FROM table_name a INNER JOIN
(SELECT item_id, unit_price, MAX(created_date) AS changed_date
FROM table_name GROUP BY item_id, unit_price) b
ON a.item_id = b.item_id and a.created_date < b.changed_date
GROUP BY a.item_id, a.unit_price
) t2
ON t1.item_id = t2.item_id AND t1.created_date >= t2.changed_date
关于mysql - 从上个月的价格变化表中获取最后 2 条更新的unit_price,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51833860/