给出要保留的记录ID列表。删除非成员的最佳方法是什么?

时间:2013-01-30 07:32:04

标签: c# mysql ado.net

我有一个记录ID列表,用于保留这些记录。删除不在集合中的所有记录的最佳方法是什么?我使用MySQL和ADO.NET与C#。我希望尽量缩短完成所有删除操作的时间。

1 个答案:

答案 0 :(得分:1)

问题是你在哪里有这些ID?他们在另一张桌子上吗?它们在文件中吗?

如果你只有几个ID

DELETE FROM foo WHERE id NOT IN (1, 2, 7, 8, 10);

如果从表格中取出ID

DELETE foo.* FROM foo LEFT JOIN foo_bar ON foo.id = foo_bar.foo_id WHERE foo_bar.foo_id IS NULL;  

如果你在文件中有id(每行一个id)

CREATE TEMPORARY TABLE foo_keep (id INT, PRIMARY KEY (id));
LOAD DATE INFILE '/tmp/myids.list' INTO foo_keep;
DELETE foo.* FROM foo LEFT JOIN foo_keep ON foo.id = foo_keep.id WHERE foo_keep.id IS NULL;