删除非重复键上的记录

时间:2014-05-19 20:28:02

标签: mysql

我尝试在一个MySQL查询中插入,更新和删除所有内容。我有一个DB,大约有100条带主键的记录。我是从CSV文件更新数据库的。我想要发生的是,如果记录在csv中而不在db中,则添加它。如果它在db和csv中,请更新它。如果它在数据库中而不在csv中,则将其删除。我有插入和更新部分工作,但我挂了删除部分。

到目前为止,这是我的查询:

INSERT INTO mydb
(tourID,agent) VALUES (:tourID,:agent) 
ON DUPLICATE KEY UPDATE 
tourID=:tourID

是否有类似“非重复密钥删除”的内容'?

2 个答案:

答案 0 :(得分:0)

这是一些伪代码:

  1. 对于CSV文件中的每条记录,请运行INSERT INTO查询。
  2. 运行DELETE FROM mydb WHERE tourID NOT IN (comma-separated list of tourIDs from CSV)
  3. 如何提出comma-separated list of tourIDs from CSV取决于您处理CSV文件的方式。

答案 1 :(得分:0)

有一个名为" toDelete"的额外列。在事务开始时,将所有行设置为true。更新行时,将其设置为false。完成后,删除toDelete仍然为true的每一行。