”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > MySQL单查询删除最新N条记录以外的所有数据

MySQL单查询删除最新N条记录以外的所有数据

发布于2025-04-13
浏览:563

How to Delete All but the Latest N Records in MySQL Using a Single Query?

使用SQL查询删除除最新N条记录外的所有记录

在MySQL中,可以删除表中除按降序ID排序的最新N条记录外的所有记录。这可以使用单个MySQL查询来实现,尽管不像预期的那样简单直接。

简单的使用类似这样的查询:

delete from table order by id ASC limit ((select count(*) from table ) - N)

将会失败,因为无法使用子查询来指定LIMIT子句的值。要实现此目的,需要更复杂的查询:

DELETE FROM `table`
WHERE id NOT IN (
  SELECT id
  FROM (
    SELECT id
    FROM `table`
    ORDER BY id DESC
    LIMIT N
  ) foo
);

在这个查询中,使用中间子查询来选择最新N条记录的ID。然后,主查询使用此子查询在一个NOT IN运算符中,将这些记录从删除过程中排除。这种方法允许我们绕过直接在LIMIT子句中或主查询的FROM子句中使用子查询的限制。

值得注意的是,中间子查询是必不可少的。如果没有它,我们会遇到与在子查询中引用正在删除的表以及早期版本的MySQL强加的限制相关的错误,这些限制不支持在NOT IN运算符中使用的子查询中使用LIMIT子句。

通过使用此查询,可以有效地删除表中除按特定列排序的最新N条记录外的所有记录,确保保留最新数据。

最新教程 更多>
  • 为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    查询模式实现缺失:解决“无法找到”错误在银光应用程序中,尝试使用LINQ建立错误的数据库连接的尝试,无法找到以查询模式的实现。”当省略LINQ名称空间或查询类型缺少IEnumerable 实现时,通常会发生此错误。 解决问题来验证该类型的质量是至关重要的。在此特定实例中,tblpersoon可能需...
    编程 发布于2025-04-15
  • 为什么PYTZ最初显示出意外的时区偏移?
    为什么PYTZ最初显示出意外的时区偏移?
    与pytz 最初从pytz获得特定的偏移。例如,亚洲/hong_kong最初显示一个七个小时37分钟的偏移: 差异源利用本地化将时区分配给日期,使用了适当的时区名称和偏移量。但是,直接使用DateTime构造器分配时区不允许进行正确的调整。 example pytz.timezone(...
    编程 发布于2025-04-15
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-04-15
  • 精通MobX:React简化与响应式状态管理
    精通MobX:React简化与响应式状态管理
    [2 MOBX是用于JavaScript应用程序的流行状态管理库,尤其是在React中。与Redux依赖于集中式商店和明确的行动派遣不同,MOBX采取了一种更具反应性的方法来管理状态。它通过跟踪依赖项并在状态更改时仅重新渲染应用程序的必要部分来自动更新您的应用程序的状态和UI。 ...
    编程 发布于2025-04-15
  • FastAPI自定义404页面创建指南
    FastAPI自定义404页面创建指南
    response = await call_next(request) if response.status_code == 404: return RedirectResponse("https://fastapi.tiangolo.com") else: ...
    编程 发布于2025-04-15
  • 为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    使用php dateTime修改月份:发现预期的行为在使用PHP的DateTime类时,添加或减去几个月可能并不总是会产生预期的结果。正如文档所警告的那样,“当心”这些操作的“不像看起来那样直观。 考虑文档中给出的示例:这是内部发生的事情: 现在在3月3日添加另一个月,因为2月在2001年只有2...
    编程 发布于2025-04-15
  • 自定义头为何出现在AJAX请求的Access-Control-Request-Headers中?
    自定义头为何出现在AJAX请求的Access-Control-Request-Headers中?
    理解访问控制请求请求标题在使用jquery通过ajax进行HTTP请求时,处理访问权限的访问控制问题对于交叉 - 轨道请求的处理至关重要。其中一个方面是将自定义标头添加到请求中。有趣的是,在使用Firebug检查请求后,似乎将自定义标题放入访问控制的标题中,而不是其各自标题中的预期值。 $。aj...
    编程 发布于2025-04-15
  • 如何高效调试CSS `calc()`值?
    如何高效调试CSS `calc()`值?
    CCSS calc()值deble debugging 确保您的公式遵守以下规则:White space is required on both sides of and - operators.How to Debug Calculated Value:You cannot direct...
    编程 发布于2025-04-15
  • 为什么尽管有效代码,为什么在PHP中捕获输入?
    为什么尽管有效代码,为什么在PHP中捕获输入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,输出...
    编程 发布于2025-04-15
  • Python读取CSV文件UnicodeDecodeError终极解决方法
    Python读取CSV文件UnicodeDecodeError终极解决方法
    在试图使用已内置的CSV模块读取Python中时,CSV文件中的Unicode Decode Decode Decode Decode decode Error读取,您可能会遇到错误的错误:无法解码字节 在位置2-3中:截断\ uxxxxxxxx逃脱当CSV文件包含特殊字符或Unicode的路径逃...
    编程 发布于2025-04-15
  • Java中应避免使用`synchronized(this)`吗?
    Java中应避免使用`synchronized(this)`吗?
    应该避免Java中的同步(此)? 当锁定是一个潜在的关注时,由于意外访问锁定是无意识的。使用同步(此)时,锁成为班级暴露接口的一部分,应相应地记录。在某些情况下,其他代码可能有意访问锁定,例如使用Collections.synchronizedMap。 何时使用同步(this) ,尽管关...
    编程 发布于2025-04-15
  • Python中何时用"try"而非"if"检测变量值?
    Python中何时用"try"而非"if"检测变量值?
    使用“ try“ vs.” if”来测试python 在python中的变量值,在某些情况下,您可能需要在处理之前检查变量是否具有值。在使用“如果”或“ try”构建体之间决定。“ if” constructs result = function() 如果结果: 对于结果: ...
    编程 发布于2025-04-15
  • C++初始化字段的最佳方式:初始化列表 vs 构造函数体
    C++初始化字段的最佳方式:初始化列表 vs 构造函数体
    在构造函数中初始化字段:初始化器列表和构造函数主体之间的差异在C中,构造函数在对象创建过程中提供了一种方便的方法来初始化实例字段。构造函数中的字段初始化有两种主要方法:初始化器列表和构造函数主体。 thing(int _foo,int _bar):成员1(_foo)(_foo),成员2(_bar)...
    编程 发布于2025-04-15
  • 如何检查对象是否具有Python中的特定属性?
    如何检查对象是否具有Python中的特定属性?
    方法来确定对象属性存在寻求一种方法来验证对象中特定属性的存在。考虑以下示例,其中尝试访问不确定属性会引起错误: >>> a = someClass() >>> A.property Trackback(最近的最新电话): 文件“ ”,第1行, attributeError:SomeClass实...
    编程 发布于2025-04-15
  • 为什么使用Firefox后退按钮时JavaScript执行停止?
    为什么使用Firefox后退按钮时JavaScript执行停止?
    导航历史记录问题:JavaScript使用Firefox Back Back 此行为是由浏览器缓存JavaScript资源引起的。要解决此问题并确保在后续页面访问中执行脚本,Firefox用户应设置一个空功能。 警报'); }; alert('inline Alert')...
    编程 发布于2025-04-15

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3