首页 >数据库 >mysql教程 >如何在没有'LIMIT & IN”子查询支持的 MySQL 中删除除最新 15 条之外的所有帖子?

如何在没有'LIMIT & IN”子查询支持的 MySQL 中删除除最新 15 条之外的所有帖子?

Linda Hamilton
Linda Hamilton原创
2024-11-11 15:44:03241浏览

How to Delete All Posts Except the Latest 15 in MySQL Without 'LIMIT & IN' Subquery Support?

MySQL 子查询限制:删除最新 15 条帖子

在数据库优化领域,经常需要删除冗余或过时的数据。这个问题探讨了如何使用 MySQL 子查询删除除最新 15 条之外的所有帖子。

原始查询:

DELETE FROM posts WHERE id NOT IN
(SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15)

但是,由于 MySQL 缺乏对早期版本中的“LIMIT & IN/ALL/ANY/SOME”子查询。为了解决这个问题,可以使用修改后的查询:

DELETE
FROM posts
WHERE id NOT IN (
      SELECT * FROM (
            SELECT id
            FROM posts
            ORDER BY timestamp DESC
            LIMIT 0, 15
      ) 
      AS t);

在此修改后的查询中,使用别名“t”引入了一个附加子查询作为派生表。此派生表包含最新 15 个帖子的 ID,根据时间戳按降序排序。然后,主查询在删除帖子时利用此派生表来排除那些特定的 ID。

通过使用此解决方法,可以达到删除所有帖子的预期结果,除了 MySQL 版本中最近的 15 个帖子之外。不支持“LIMIT & IN/ALL/ANY/SOME”子查询。这种修改后的方法有效地删除了过时的帖子,同时保留了最新的帖子以供进一步参考。

以上是如何在没有'LIMIT & IN”子查询支持的 MySQL 中删除除最新 15 条之外的所有帖子?的详细内容。更多信息请关注PHP中文网其他相关文章!

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