MySql 删除 - 与选择(加入)相同

标签 mysql sql-delete

我将一些记录从一个表复制到另一个 使用此查询:

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/

相关文章:

mysql - 如何使用 MySQL 中每行的动态数据动态更新所有行?

mysql - mysql中3个表之间的关系

Mysql delete语句有限制

mysql - 如何删除基于组合两列的条目

mysql - SQL Query SELECT 和 Group by 条件

PHP MySQL更新和奇怪的字符?

php - 将某些表列导入到数据库表中

sql - 如何删除SQL Server中的大量数据而不丢失数据?

sql - 如何使用 SQL Server 的 INNER JOIN 进行删除?

php - 从mysql中的多个表中删除