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

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

Susan Sarandon
Susan Sarandon原创
2024-11-15 11:48:02544浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn