表格如下所示:
id Product Price price_update_date
1 Product 21.99 2022-11-09 6:32:11
2 Product 22.99 2022-09-27 9:06:14
3 Product 19.99 2022-07-10 6:27:49
4 Product 18.99 2022-05-24 7:31:20
5 Product 17.98 2022-04-21 8:59:18
6 Product 17.99 2022-02-02 8:33:48
7 Product 19.99 2021-12-20 8:43:41
8 Product 18.99 2021-11-29 2:31:00
9 Product 19.99 2021-10-11 7:42:17
10 Product 19.98 2021-06-10 5:11:03
11 Product 19.99 2021-02-25 2:23:45
这里我只有价格更新记录。我需要找到在特定日期的价格。比如说,2022-10-01(10月1日)。在当前情况下如何执行它?
MySQL版本5.6.51
2条答案
按热度按时间brccelvz1#
要检索单个产品,应:
或适用于所有产品:
tnkciper2#
要在只有价格更新记录的情况下查找产品在特定日期的价格,您可以使用SQL查询查找在特定日期或之前的每个产品的最新更新记录,然后提取相应的价格值。以下是可实现此目的的查询示例:
此查询首先对记录进行筛选,使其仅包含指定日期当天或之前的记录(本例中为“2022 -10-01”)。然后,它使用ROW_NUMBER()窗口函数,用于为其产品组中的每条记录分配等级,最新记录的等级为1。最后,它仅选择等级为1的记录,它将是每个产品在指定日期或之前的最新记录。
请注意,此查询假定每个产品至少有一条价格更新记录,并且数据集中没有空白或重叠的记录。如果有任何缺失或不完整的记录,此查询的结果可能不正确。此外,此查询假定price_update_date列存储为datetime数据类型。如果存储为字符串,您可能需要在WHERE子句中使用不同的格式说明符来正确地比较日期。