gpt4 book ai didi

php - 通过覆盖现有数据来管理MySQL表中的数据

转载 作者:行者123 更新时间:2023-11-30 01:31:49 25 4
gpt4 key购买 nike

我有一个表,用于保存大学网站的通知。我希望它最多可容纳 1,000 个通知。我使用 id 字段(自动递增)来获取 10 个最近的通知(通过计算总条目数)表示当前最新的 id,然后向后遍历 10),然后是下一个 10,依此类推。

现在,当通知达到 1000 条限制时,通知应开始通过覆盖现有数据从 id 1 上传。现在的问题是我该如何修改sql查询以确定最新的通知?因为假设我在表格满后上传了 17 个通知,那么通知 1 到 17 是最近的通知,17 是最新的,在它旁边,即 18 是表中最近的通知。

或者是否有针对这种情况的任何教程或特定内容或任何最佳方法?

这是我的表结构-

+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | varchar(160) | NO | | NULL | |
| body | mediumtext | NO | | NULL | |
| posted_by | varchar(30) | NO | | NULL | |
| semester | int(2) | NO | | NULL | |
| branch | varchar(30) | NO | | NULL | |
| posted_on | date | NO | | NULL | |
+-----------+--------------+------+-----+---------+----------------+

最佳答案

您可以在插入查询之后使用删除查询。这样您就不需要拉出另一个查询来查看上次更新的记录。

insert into table notices...;
delete from notices where id not in (select top 1000 id from notices);

如果出于某种原因您想保留相同的 1000 个 id,那么您可以在表中关闭自动增量,然后您将必须提取两个不同的查询:

select id,min(posted_on) from notices;
update notices set .... where id=$id;

确实,因为 MySQL 被设计为处理数百万行,所以您实际上根本不需要这样做。您可以提取的查询上限为 1000。

select * from notices limit 1000 order by posted_on DESC;

关于php - 通过覆盖现有数据来管理MySQL表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17357936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com