mysql - 如果总行数超过 3,则从表中删除最后一行
问题描述
仅当总行数超过 3 时,才从表中删除最后一行。
如何确定记录总数是否超过 3,然后才删除最后一行或最旧行?
DELETE FROM `wp_comments` WHERE `comment_post_ID` = 23 ORDER BY `comment_ID` LIMIT 1
解决方案
我们可以尝试在这里进行连接删除,借助ROW_NUMBER
:
DELETE wp1
FROM wp_comments wp1
INNER JOIN
(
SELECT comment_ID, ROW_NUMBER() OVER (ORDER BY comment_ID DESC) rn
FROM wp_comments
) wp2
ON wp2.comment_ID = wp1.comment_ID
WHERE
wp2.rn > 3;
这里的策略是为表中的每条记录分配一个行号,comment_ID
用作排序。最旧条目的行号计数从 1 开始,然后从那里增加。我们删除除最近 3 条以外的任何记录。
请注意,上述方法需要 MySQL 8+,如果您使用的是早期版本的 MySQL,现在可能是升级的好时机。
推荐阅读
- android - 如何为启动画面使用不同的背景颜色?
- excel - VBA将值粘贴到最后一行下方的新工作表中
- html - 如何使用 widget_tweaks 自定义 django 注册表单的帮助文本?
- json-api - 如何在 JSON-API 响应中表示多个图像大小?
- azure-cosmosdb - CosmosDb OrderBy 数组中的第一项
- java - 表现明智;(单个事件侦听器)或(查询)firebase?
- javascript - 移动设备中的 Material Ui 和 react-router onClick 事件延迟
- javascript - 使用 DT 格式化列的单个/多个条件
- mysql - 无法添加外键约束,Mysql 错误 1215
- android - Showing Image in ImageView from Internet by using Glide