首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个MySQL表并删除不再存在的行

比较两个MySQL表并删除不再存在的行
EN

Stack Overflow用户
提问于 2014-05-27 14:52:44
回答 1查看 2.1K关注 0票数 2

我使用PHP/MySQL创建了一个系统,该系统可以下载一个大型的XML数据集,并对其进行分析,然后每周将解析的数据插入MySQL数据库。

该系统由两个结构相同的数据库组成。一个是生产数据库,另一个是临时数据库,首先解析并插入数据。

当数据被插入到临时数据库中时,我通过插入/替换生产数据库中的数据来执行合并。到目前为止,我已经做了以上所有的事情。然后我意识到,可能在新数据集中删除的数据将留在生产数据库中。

我需要执行一次检查,看看新数据是否仍然在生产数据库中,如果是,然后离开它,如果它不是删除生产数据库中的行,那么行就不会被留下留待执行。

出于参数的考虑,假设这两个数据库名为database_temporarydatabase_production

我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-27 14:59:16

如果使用SQL进行合并,那么简单的SQL也可以执行删除操作:

代码语言:javascript
复制
delete from database_production.table
where pk not in (select pk from database_temporary.table)

备注:

一个例子not exists

代码语言:javascript
复制
delete from database_production.table p
where not exists (select 1 from database_temporary.table t where t.pk = p.pk)

执行情况说明:

正如@mgonzalez在关于这个问题的注释中指出的那样,您可能希望使用时间戳列(类似上次修改)来进行比较/合并,这样您就只需要更改行。这并不具体适用于delete,您不能为delete使用时间戳,因为行将不存在。

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

https://stackoverflow.com/questions/23892604

复制
相关文章

相似问题

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