【发布时间】:2020-04-29 19:01:30
【问题描述】:
我想运行这个 DELETE 查询:
DELETE * FROM Table1 WHERE Table1.ID <> (SELECT Table1.ID FROM Table1 WHERE ....)
括号中的查询返回我想保留在 Table1 中的所有 ID(此查询独立工作,我测试过)。但是,一旦我添加了 DELETE 部分,我就会收到以下错误:“此子查询最多可以返回一条记录”。我试过代码
DELETE * FROM Table1 WHERE Table1.ID NOT IN (SELECT Table1.ID FROM Table1 WHERE ....)
但是现在我的数据库挂起并且不再执行任何操作...
感谢您的帮助!
【问题讨论】:
-
这可能不是“挂起”,而是花费了很多时间。您要删除多少行?
-
子查询单独运行需要多长时间?
-
子查询耗时 3 秒。我想删除 39 列的 140.000 行。
-
是的,删除 140k 行需要时间。特别适用于 Access 等小型数据库引擎。