您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL查询:删除表中除最新N之外的所有记录?

SQL查询:删除表中除最新N之外的所有记录?

您不能以这种方式删除记录,主要问题是您不能使用子查询来指定LIMIT子句的值。

这有效(在MysqL 5.0.67中测试):

DELETE FROM `table`
WHERE id NOT IN (
  SELECT id
  FROM (
    SELECT id
    FROM `table`
    ORDER BY id DESC
    LIMIT 42 -- keep this many records
  ) foo
);

中间子查询 必需的。没有它,我们将遇到两个错误

幸运的是,使用中间子查询使我们能够绕过这两个限制。

Nicole指出,可以针对某些用例(例如这一用例)显着优化此查询。我建议您也阅读该答案,以查看它是否适合您。

SQLServer 2022/1/1 18:14:52 有441人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶