首页 > 数据库 > mysql教程 > 如何在子查询中使用 LIMIT 根据最新 15 条记录删除 MySQL 中的行?

如何在子查询中使用 LIMIT 根据最新 15 条记录删除 MySQL 中的行?

Susan Sarandon
发布: 2024-11-15 11:48:02
原创
539 人浏览过

How to Delete Rows in MySQL Based on the Latest 15 Records Using LIMIT in a Subquery?

具有 LIMIT 限制的 mySQL 子查询

在 MySQL 中,尝试在使用 IN 运算符的子查询中使用 LIMIT 子句可能会触发错误消息指出 MySQL 不支持此功能。本文提供了解决此问题的方法,允许您根据与表中最新 15 条记录相关的特定条件从表中删除行。

要获得所需的结果,您可以使用以下查询结构:

DELETE 
FROM posts 
WHERE id not in (
      SELECT * FROM (
            SELECT id 
            FROM posts 
            ORDER BY timestamp desc 
            limit 0, 15
      ) 
      as t);
登录后复制

外部 DELETE 语句针对 posts 表进行行删除。 IN 运算符用于标识应保留的行,这些行是在子查询结果中找到的行。

子查询从 posts 表中选择 id 字段,按时间戳对结果进行降序排序,然后应用 LIMIT 子句来检索前 15 条记录。通过使用别名 t,子查询创建一个临时表以进行高效处理。

这种解决方法有效地消除了 MySQL 的限制,并允许您执行删除所有不属于最近 15 个帖子的预期操作记录。

以上是如何在子查询中使用 LIMIT 根据最新 15 条记录删除 MySQL 中的行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板