我有这段代码可以从csv文件中插入值。当数据库中的行已经存在时,将更新某些值。就像我希望的那样。
INSERT INTO test_table (`id`,`order_id`,`quantity`,`price`,`order_date`,`shipping_date`)
VALUES ('$orderId', '$quantity', '$price', '$orderDate', '$shippingDate')
ON DUPLICATE KEY UPDATE `order_date` = '$orderDate', `shipping_date` = '$shippingDate'"但是,当该行不在csv时,必须从数据库中删除它。例如:
csv文件:
order_id quantity price order_date shipping_date
1 10 1.00 2016-10-5 2016-10-6我运行脚本并将csv的结果添加到数据库中。但是我的下一个csv包含以下内容:
order_id quantity price order_date shipping_date
2 120 2.00 2016-10-8 2016-10-10必须添加新行。没问题,我的查询很好。但是order_id 1的行在csv上消失了。必须从数据库中删除该行。我该怎么做?这可能与我的查询有关吗?还是我还需要一个?
发布于 2016-07-21 10:46:39
您需要添加一个字段来存储更新的“版本”。
ALTER TABLE test_table ADD version BIGINT DEFAULT 0;在进行插入之前,在PHP中分配$vers = time()。旧行将包含小于当前版本号的版本值。
将SQL更改为更新查询的重复部分中的version字段。
INSERT INTO test_table (`id`,`order_id`,`quantity`,`price`,`order_date`,`shipping_date`,`version`)
VALUES ('$orderId', '$quantity', '$price', '$orderDate', '$shippingDate','$vers')
ON DUPLICATE KEY UPDATE `order_date` = '$orderDate', `shipping_date` = '$shippingDate', `version` = $vers"一定要进口。
然后在导入完成后,删除旧数据。
DELETE FROM test_table WHERE version < $vers应该能起作用。
https://stackoverflow.com/questions/38501848
复制相似问题