我将一些记录从一个表复制到另一个 使用此查询:
insert into pages_finished (keyword,pages,resultlist,done,current)
select keyword,pages,resultlist,done,current
from pages_done o
where (select count(*) as totalPages from pages_done x where x.keyword = o.keyword)-1 = pages
现在我想从源表中删除相同的记录, 我以为这很简单:
delete from pages_done o
where (select count(*) as totalPages from pages_done x where x.keyword = o.keyword)-1 = pages
但这行不通。 谁能告诉我这样做的正确方法是什么?
@bgdrl 回答后,我正在考虑只运行选择, 获取应复制的所有记录的 ID, 然后删除; 但我认为一定有更简单的解决方案,有人吗?
即使将@bgdrl 的答案标记为正确答案, 这只是因为这是一个事实。
对于任何对我最终所做的事情感兴趣的人:
我做了与开始时相同的选择(但只选择了 id 列,因为选择所有列会杀死我可怜的电脑),
将其导出到 INSERT STATMENTS
(使用 mysqlworkbench),
在记事本中打开文本文件,
将所有 INSERT INTO
... 替换为 DELETE FROM WHERE ID=
,
并在 mysql 中运行该查询。
我觉得用这种方式很愚蠢,但显然别无选择。
最佳答案
来自 mysql 站点:“您不能修改表并从子查询中的同一个表中进行选择。这适用于 DELETE、INSERT、REPLACE、UPDATE 等语句”。 http://dev.mysql.com/doc/refman/5.1/en/subqueries.html
关于MySql 删除 - 与选择(加入)相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5934065/