如何根据某些条件插入或更新



有人能帮我一下吗?我有两个表:

1。具有自定义日期相关定价窗口的现有价格表:

  id | prod id |   start    |    stop    |   price  
-----+---------+------------+------------+-----------
   1 |   65210 | 2012-01-01 | 2013-01-01 |  5.00     
   2 |   54841 | 2012-02-05 | 2013-03-01 | 15.00     
   3 |   51518 | 2012-01-01 | 2013-01-01 |  5.00     
   4 |    8402 | 2012-01-01 | 2017-01-01 |  5.00     
   5 |    1520 | 2012-01-01 | 2050-01-01 | 12.00     
   6 |     959 | 2013-10-01 | 2018-01-01 |  5.00  

2。"新"定价数据表(用于由每个唯一的prod id更新上面的表):

 prod id |   start    |    stop    |   price   
  -------+------------+------------+-----------
   65210 | 2013-01-01 | 2025-01-01 |  5.00     
   54841 | 2013-02-05 | 2017-03-01 | 15.00     
     959 | 2013-01-01 | 2017-01-01 |  5.00    

用表2中的stop日期更新表1中的stop日期的最佳方法是什么?假设它仍然"在窗口中"?如果现有的stop日期在"新的"start日期之前,则将使用新的startstop日期创建新的定价记录。

谢谢!

…要用表2中的stop日期更新表1中的stop日期,假设它仍然"在窗口中"…

UPDATE price p JOIN new_price n
    ON p.prod_id = n.prod_id
   AND n.start BETWEEN p.start AND p.stop
   SET p.stop = n.stop

插入新记录"…"如果现有stop日期在新的start日期之前…"

INSERT INTO price (`prod_id`, `start`, `stop`, `price`)
SELECT n.prod_id, n.start, n.stop, n.price
  FROM new_price n JOIN price p
    ON n.prod_id = p.prod_id
   AND n.start > p.stop

这里是SQLFiddle demo

相关内容

  • 没有找到相关文章

最新更新