有人能帮我一下吗?我有两个表:
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
日期之前,则将使用新的start
和stop
日期创建新的定价记录。
谢谢!
…要用表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