gpt4 book ai didi

php - 当结果不在 csv 文件中时从表中删除行

转载 作者:行者123 更新时间:2023-11-29 11:24:08 24 4
gpt4 key购买 nike

我有这段代码可以从 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 中消失了。必须从数据库中删除该行。我怎样才能做到这一点?这可能与我的查询有关吗?或者我还需要另一个吗?

最佳答案

您需要添加一个字段来存储更新的“版本”。

ALTER  TABLE test_table ADD version BIGINT DEFAULT 0;

在执行 INSERT 之前,在 PHP 中分配 $vers = time() 。旧行将包含小于当前版本号的版本值。

更改 SQL 以更新查询的 INSERT 和 ON DUPLICATE 部分中的 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

应该可以解决问题。

关于php - 当结果不在 csv 文件中时从表中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38501848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com