-1

我有一个要保留的记录的记录 ID 列表。删除不在集合中的所有记录的最佳方法是什么?我在 C# 中使用 MySQL 和 ADO.NET。我想尽量减少完成所有删除的时间。

4

1 回答 1

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;
于 2013-01-30T07:54:46.110 回答