首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当结果不在csv文件中时,从表中删除行

当结果不在csv文件中时,从表中删除行
EN

Stack Overflow用户
提问于 2016-07-21 10:32:32
回答 1查看 1.1K关注 0票数 0

我有这段代码可以从csv文件中插入值。当数据库中的行已经存在时,将更新某些值。就像我希望的那样。

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
order_id  quantity price order_date shipping_date
1          10      1.00  2016-10-5  2016-10-6

我运行脚本并将csv的结果添加到数据库中。但是我的下一个csv包含以下内容:

代码语言:javascript
复制
order_id  quantity price order_date shipping_date
2         120      2.00  2016-10-8  2016-10-10

必须添加新行。没问题,我的查询很好。但是order_id 1的行在csv上消失了。必须从数据库中删除该行。我该怎么做?这可能与我的查询有关吗?还是我还需要一个?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-21 10:46:39

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

代码语言:javascript
复制
ALTER  TABLE test_table ADD version BIGINT DEFAULT 0;

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

将SQL更改为更新查询的重复部分中的version字段。

代码语言:javascript
复制
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"

一定要进口。

然后在导入完成后,删除旧数据。

代码语言:javascript
复制
DELETE FROM test_table WHERE version < $vers

应该能起作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38501848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档