如何加入表格并按最大日期选择 [重复]

Posted

技术标签:

【中文标题】如何加入表格并按最大日期选择 [重复]【英文标题】:How to join tables and select by max date [duplicate] 【发布时间】:2021-01-02 13:52:09 【问题描述】:

我有这个表,一个有产品,另一个有产品的价格,但它按日期变化,所以我想要一个有产品和最后价格的选择。

我做了这个选择,但它返回了所有产品和所有价格 我只想插入最后价格的所有产品

SELECT tbl_product.*, tbl_product_price.price FROM tbl_product JOIN tbl_product_price ON tbl_product.id = tbl_product_price.FK_id_product
tbl_product
id, product
 1   bread
 2   soda
 3   milk

tbl_product_price
FK_id_product, price,   last_date_change
     1          0.11   2020-09-15 17:04:41
     1          0.12   2020-09-16 09:13:53
     1          0.13   2020-09-17 12:20:25
     2          0.65   2020-09-15 20:00:07
     2          0.69   2020-09-16 11:33:40
     3          0.91   2020-09-15 02:54:32
     3          1.00   2020-09-16 13:33:22
     3          0.95   2020-09-17 15:41:11

我的加急查询结果

id, product,  price
 1   bread    0.13
 2   soda     0.69
 3   milk     0.95

我希望我解释得很好 谢谢

【问题讨论】:

【参考方案1】:

相关子查询可能会派上用场:

select 
    p.*,
    (
        select pp.price 
        from tbl_product_price pp 
        where pp.fk_id_product = p.id 
        order by pp.last_date_change desc limit 1
    ) as price
from tbl_product p

对于此查询的性能,请考虑在tbl_product_price(fk_id_product, last_date_change desc, price) 上建立索引。

【讨论】:

以上是关于如何加入表格并按最大日期选择 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

日期选择器显示错误的月份[重复]

如何在 Oracle SQL 中选择前 1 名并按日期排序? [复制]

从表中选择具有最大日期的行

如何在excel中把日期转换成纯数字

SQL为每个部门选择最大销售额的日期[重复]

通过另一个字段选择具有最大日期顺序的数据[重复]