MySQL:在表更新期间删除“孤立”行


MySQL: Deleting "orphaned" rows during a table update?

Ok...这是我的问题...我正在从云 REST 查询中提取几千条记录,并在 CRON 期间更新本地表,并使用拉取的数据插入和更新现有记录。即

INSERT INTO `property` ($columns_string) 
VALUES ($values_string) ON DUPLICATE KEY UPDATE $update_string

很标准的东西...但是我遇到了一个问题,如果记录在拉取的数据中不再存在,则记录将被"孤立",即我需要删除新数据中不再存在的现有记录或更新标志或其他内容告诉我的系统不再以相同的方式处理它们。

我希望我说清楚...

编辑:我应该补充一点,REST拉取实际上是通过几种不同的"类型"数据循环,并且INSERT将它们全部填充到一个主表中,因此简单的"如果不存在则删除.."将不起作用。

ADVTHANSance,-马克

在表 "property" 中添加一列 "flag tinyint(1)"。上传之前将列值更新为 0

update `property`
set flag = 0

在"插入"子句中,更新此新列

INSERT INTO `property` ($columns_string, flag) 
VALUES ($values_string, 1) ON DUPLICATE KEY UPDATE $update_string, flag=1

上传后删除/更新未使用的字段

update `property`
set active=0
where flag=0

如果字段"活动"表示 1 - 作为活动,0 - 处于非活动

状态