两个字段之间的Mysql日期来自其他字段

两个字段之间的Mysql日期来自其他字段,mysql,Mysql,我在第一张表中列出了所有物品在第一个日期的价格变化,该日期定义了价格变化的日期。。价格演变 article -- date ----- unit.price 1 --- 2012-01-01 -- 1.20 1 --- 2013-01-01 -- 1.10 1 --- 2014-01-01 -- 1.20 2 --- 2012-01-01 -- 1.40 2 --- 2013-01-01 -- 1.50 2 --- 2014-01-01 -- 1.20

我在第一张表中列出了所有物品在第一个日期的价格变化,该日期定义了价格变化的日期。。价格演变

article -- date  ----- unit.price  
1 ---  2012-01-01 -- 1.20  
1 ---  2013-01-01 -- 1.10  
1 ---  2014-01-01 -- 1.20  
2 ---  2012-01-01 -- 1.40  
2 ---  2013-01-01 -- 1.50  
2 ---  2014-01-01 -- 1.20  
在我的第二张表格中,订单历史记录列表忘记单价0.00订单

article-- date---- price unit --- total order  
1 ----- 2012-02-03 -- 0.00 -------- 12.10  
2 ----- 2012-02-05 -- 0.00 -------- 15.20   
1 ----- 2013-01-01 -- 0.00 -------- xxx   
1 ----- 2014-05-05 -- 0.00  
1 ----- 2014-05-06 -- 0.00  
我想在第二张表中包括正确的单价,但在两个正确的日期之间。。价格的变化可以是20个日期/价格。价格必须介于日期1至日期2价格和日期2至日期3价格之间。。。等 第二表所需订单:

1 ----- 2012-02-03 -- 1.20 ----- 12.10  
2 ----- 2012-02-05 -- 1.20 ----- 15.20  
1 ----- 2013-01-01 -- 1.10 ----- xxx  
我测试这个

更新订单 设定订单、单价= 选择 单价 从进化到价格 哪里 orders.article\u id=evolution\u price.article\u id 和 orders.order\u date>=演变\u价格.change\u日期 顺序 按演变、价格、变更、日期说明限制1
;

欢迎来到StackOverflow

我想你想要这样的东西:

select 
  article_id ,
  order_date ,
  unit_price  as old_unit_price,
  order_total,
  (select unit_price
   from evolution as e
   where o.article_id = e.article_id
   and change_date <= order_date
   order by change_date desc
   limit 1 ) as new_unit_price
from orders as o
在这里,它是一把小提琴:

请注意,您的问题应该标记为sql,而不是在sql、表或数据之间标记


您发布了示例数据和结果,这真的很有帮助。但有时,它也有助于您的表结构。您真的应该自己尝试一个解决方案并发布,以便我们可以为您更正。

是的,谢谢。。。太简单了。。。但是对于新手来说。。。这是真的。。。我可以直接用集合从新单价更新到旧单价吗。。答案很好。。。我只是从我的服务器结果中得到了一点响应时间1'000'000订单和2万价格Turophile的答案是我搜索的。。。我现在搜索如何使用update和set直接更新第二个表