mysql - 左加入 MAX(DATE)

标签 mysql join maxdate

我有 2 个表:交易 (a) 和价格 (b)。我想从表 b 中检索在交易日期有效的价格。

表a包含文章交易的历史: Store_type、日期、文章...

表 b 包含商品价格的历史记录: Store_type, Date, Article, price

目前我有这个:

Select
a.Store_type,
a.Date
a.Article,
(select b.price
  from PRICES b
  where b.Store_type = a.Store_type
  and b.Article = a.Article
  and b.Date = (select max(c.date)
    from PRICES c
    where c.Store_type = a.Store_type
    and c.Article = a.Article
    and c.date <= a.date)) AS ART_PRICE
from TRANSACTIONS a

它工作得很好,但由于双重子查询,它似乎需要很长时间。 可以用 LEFT JOIN 完成同样的事情吗?

最佳答案

可以尝试使用以下查询吗?

SELECT      a.Store_type, a.Date, a.Article, b.Price
FROM        TRANSACTIONS a
LEFT JOIN   PRICES b ON a.Store_type = b.Store_type
AND         a.Article = b.Article
AND         b.Date = (SELECT   MAX (c.Date) 
                      FROM     PRICES c 
                      WHERE    a.Store_type = c.Store_Type
                      AND      a.Article = c.Article
                      AND      c.Date <= a.Date)

它仍然有一个子查询,用于检索最大日期。

关于mysql - 左加入 MAX(DATE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32265830/

相关文章:

javascript - 如何设置 mobiscroll 的 maxDate?

mysql - 在统计系统上,我应该保存有关多个表或仅一个表的单次访问的少量信息吗?

mysql - 用反引号封装复杂的 mysql 插入

MySQL 连接操作以获取有关帖子的信息以及撰写​​该帖子的用户名

scala - Spark - 连接后如何避免重复列?

jquery-ui-datepicker - 删除 jQuery UI Datepicker 中的 minDate/maxDate 限制

mysql - 选择最小日期和最大日期的其他列值

java - 在netbeans中从mysql数据库绑定(bind)jtable

php - 如何使用循环 PHP 语句从 mysql 获取数据到 ios?

php sql将来自不同数据库的多个表连接在一起