如何使用条件中同一个表中的数据有条件地从表中删除行?

时间:2012-02-01 17:12:53

标签: mysql

我无法构建对mysql的查询,将行从200移除到结束。

DELETE FROM `popular` 
WHERE NOT EXISTS(
SELECT *
FROM `popular`
ORDER BY `rank` DESC, `timestamp` DESC
LIMIT 200
)

由于错误 - #1093 - 您无法在FROM子句

中为更新指定目标表'popular'

2 个答案:

答案 0 :(得分:1)

将其拆分为两个调用:首先运行一个select并找到要删除的行的ID。然后复制这些ID并在删除命令中使用它们。

如果您不想在ID之间手动添加逗号,可以在textpad或excel中使用“查找和替换”,这样做非常简单。

答案 1 :(得分:1)

您可能需要先对行进行排名,然后将其存储在临时表中并标识要删除的行

select @rownum:=@rownum+1 rownum, popular.* from (select @rownum:=0) r, popular order by rank desc, timestamp desc