我的MySQL价格表
+----------+-----+----------+
|product_id|price|date_at |
+----------+-----+----------+
| 1 |41.50|2020-09-01|
| 1 |99.50|2020-09-02|
| 1 |41.50|2020-09-03|
| 1 |41.50|2020-09-04|
| 1 |41.50|2020-09-05|
| 1 |9.90 |2020-09-06|
+----------+-----+----------+
我可以得到今天和昨天的价格:
select today.price,
yesterday.price as yesterday_price
from prices today
left join prices yesterday on today.product_id = yesterday.product_id
where yesterday.date_at = '2020-09-05' <-- I need to have it dynamic
and today.date_at = '2020-09-06'
我需要将昨天的日期设为N天(MAX(价格))以内的任何日期。
示例: 昨天。date_at=相同product_id的最近20天最高价格
也许我应该在左联接中而不是在哪里使用更多代码。 请告诉我如何更改查询。
答案 0 :(得分:0)
显然,您要执行的操作是这样的:
SELECT MAX(price) FROM prices
WHERE date_at BETWEEN _from_date AND _to_date
AND product_id = _product_id;
您必须硬键入参数(_from_date; to_date;和_product_id)。如果要使其动态化,就必须考虑编写等效的存储过程